标题:指针问题!!
只看楼主
ycd123
Rank: 1
等 级:新手上路
帖 子:42
专家分:5
注 册:2010-1-6
结帖率:91.67%
已结贴  问题点数:5 回复次数:5 
指针问题!!
#include<stdio.h>
main()
{
    char *ch1[4]={"hello","ni","hao","a"};
    char *ch2[4]={"fei","chang","gao","xin"};
    char **p1=NULL;
    *p1=ch1[1];
    printf("%s\n",*p1);
}
编译时没有错,但是运行错误。
把代码该成
#include<stdio.h>
main()
{
    char *ch1[4]={"hello","ni","hao","a"};
    char *ch2[4]={"fei","chang","gao","xin"};
    char **p1=ch2;
    *p1=ch1[1];
    printf("%s\n",*p1);
}
运行后又对了,是怎么回事啊。
为什么不能给**P1赋空值啊

[ 本帖最后由 ycd123 于 2010-3-31 11:58 编辑 ]
搜索更多相关主题的帖子: chang hello include 
2010-03-31 11:54
lansong
Rank: 4
等 级:业余侠客
帖 子:79
专家分:226
注 册:2009-6-11
得分:1 
p1 = NULL;
*p = ch1[1];这句意思是把ch1[1]里的值 赋值到 给p1所指向内存 但是p1指向的却是不可访问的NULL,也就是说0X00000000(null)不可写(write)也不能读(read)
2010-03-31 12:50
ycd123
Rank: 1
等 级:新手上路
帖 子:42
专家分:5
注 册:2010-1-6
得分:0 
回复 2楼 lansong
那请问指针在什么情况下可以赋0值。
比如这个代码:
int a[10],*p=NULL;
p=a;
为什么这样又能够赋空值?
2010-03-31 14:58
亚小南
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:136
注 册:2009-11-19
得分:1 
我怎么两个都运行不了啊
2010-04-01 13:02
xxwpk007
Rank: 4
等 级:业余侠客
帖 子:166
专家分:289
注 册:2007-7-29
得分:1 
回复 3楼 ycd123
int a[10],*p=NULL;
p=a; // 这是给指针赋值


*p1=ch1[1]; // 这是给指针指向的值赋值,如果指针指向空的话,当然无法给一个空地址赋值。


2L已经说得很清楚了
2010-04-01 18:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-301132-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.089432 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved