C语言,指针和数组区别

char*a[]={'I','','a','m','','h','a','p','p','y'};charb[]={'I','','a','m','','h','a','... char *a[]={'I',' ','a','m',' ','h','a','p','p','y'};
char b[]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
char c[]={"I am happy"};
char d[]="I am happy";
char *e[]={"I"," ","a","m"," ","h","a","p","p","y"};
char *f[]={"I am happy"};
char *g="I am happy";
printf("%d,%s\n",strlen(a),a);
printf("%d,%s\n",strlen(b),b);
printf("%d,%s\n",strlen(c),c);
printf("%d,%s\n",strlen(d),d);
printf("%d,%s\n",strlen(e),e);
printf("%d,%s\n",strlen(f),f);
printf("%d,%s\n",strlen(g),g);
输出结果是:
1,I
10,I am happy
10,I am happy
10,I am happy
3,竁+
3,糤+
10,I am happy
//**************************
请问,a~g能这么定义吗?每个代表了什么意思?
展开
 我来答
851957519
2011-05-24 · TA获得超过1061个赞
知道小有建树答主
回答量:213
采纳率:0%
帮助的人:173万
展开全部
char a[]是字符数组,char *a[]是指向字符串的指针数组。所以给字符串赋值char a[]={'I',' ','a','m',' ','h','a','p','p','y'};是正确的,相当于初始化一个字符串。但是char *a[]=[]={'I',' ','a','m',' ','h','a','p','p','y'};就不正确了,正确的做法是应该吧单引号改为双引号。
alifengsi2
2011-05-21 · TA获得超过146个赞
知道答主
回答量:359
采纳率:0%
帮助的人:87.5万
展开全部
凡是指针都不能这么定义。
例如:*a[]={……};
这是错误的
带有“*”的变量不能赋值,因为该变量内储存的是另外一个变量的地址 。
“*”是指项该变量地址的符号。
你要为指针函数赋值的话只能这样赋:
*P=&a[];
a[]={……};
其中“&”是变量a[]的地址的意思。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
logic1965
2011-05-22 · TA获得超过551个赞
知道小有建树答主
回答量:282
采纳率:0%
帮助的人:209万
展开全部
char *a[];
这个定义没问题的。。

含义:a 首先是个数组,数组元素是字符指针。。
但是其赋值出了问题。。右边大括号中每个元素是char类型,而数组元素类型是字符指针。。

另外,strlen(a)有问题。。strlen接受一个字符指针参数,a是一个字符指针指针,虽然都是指针,但指向的类型不同。。
同理,第一条printf的第二个输出也是这个问题。。

下面的几条基本都是类型不匹配。。输出结果就奇奇怪怪
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式