昨天在写c和指针的课后题时候总是编译不通过,是一个叫
incompatible assignment types 什么的错误,我将一个数组char a[100]
赋值一个字符串常量a=”HUNDRED “;
会报错
如果改为
a[0]=”HUNDRED “;
不会报错,但是运行结果打印字符串打不出任何东东
如果把a改成动态数组就像char a=(char )malloc(100);
就完全没有问题
纠结
看完数组这一章感觉自己这个问题很可笑
当a作为字符串数组时,数组的赋值应当在初始化时就做好,或者使用strcpy函数来赋值,a是一个const指针,不能被赋值
当a作为一个char *指针的时候,可以赋值字符串常量,这样a就指向了字符串常量的地址,操作指针就能够获得字符串常量的值,而不是把常量写进malloc(size)的内存空间去,所以今天我把内存分配的函数malloc去掉了,还是可以编译通过很好的运行
1.字符指针可以指向一个字符串。
我们可以用字符串常量对字符指针进行初始化。例如,有说明语句:
char *str = “This is a string.”;
是对字符指针进行初始化。此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址。
这里要注意字符指针与字符数组之间的区别。例如,有说明语句:
char string[ ]=”This is a string.”;
此时,string是字符数组,它存放了一个字符串。
字符指针str与字符数组string的区别是:str是一个