C语言,指针和数组区别

2024-11-27 03:15:08
推荐回答(3个)
回答1:

char a[]是字符数组,char *a[]是指向字符串的指针数组。所以给字符串赋值char a[]={'I',' ','a','m',' ','h','a','p','p','y'};是正确的,相当于初始化一个字符串。但是char *a[]=[]={'I',' ','a','m',' ','h','a','p','p','y'};就不正确了,正确的做法是应该吧单引号改为双引号。

回答2:

凡是指针都不能这么定义。
例如:*a[]={……};
这是错误的
带有“*”的变量不能赋值,因为该变量内储存的是另外一个变量的地址 。
“*”是指项该变量地址的符号。
你要为指针函数赋值的话只能这样赋:
*P=&a[];
a[]={……};
其中“&”是变量a[]的地址的意思。

回答3:

char *a[];
这个定义没问题的。。

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

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

下面的几条基本都是类型不匹配。。输出结果就奇奇怪怪