二级c指针

来源:百度知道 编辑:UC知道 时间:2024/06/15 18:50:27
下列语句是否正确?
char *string;
*string="I love china!";
及与
char *string;
string="I love china!";
的差别
char str[14];
str[]="I love china!";

char str[14]={"I love china!"};
的区别

"I love china!"是一个字符串常量,让其赋值给指针变量的意思是说将这个指针常量的首地址给指针变量,因此string="I love china!"是可以的,它让string指向了"I love china!"这个字符串常量在内存中栈段的首地址。
而*string也就是指针指向的值,但就它的值是char类型,而"I love china!"的首地址是char *类型,这一点编译就不能通过。
第二个问题一般认为str[]="I love china!"是错误的,有的编译器直接报错处理,说过了"I love china!"是代表字符串首地址,自然不能给char类型的数组直接赋char *类型值,char str[14]={"I love china!"};就是让str这个数组初始化,其中的各项值为I love china!\0,不要拉掉\0,它是数组末尾在初始化时自动添加的结束符,如果你定义为str[13]编译就报错。

string="I love china!";这种赋值法不正确
string只是个地址

楼上的是错的*string="I love china!"是不行的string="I love china!";可以
char str[14];
str[]="I love china!";//最后结果str这个数组中只有第一个被赋值了,其他的为空

char str[14]={"I love china!"};//所有的偶赋值了

没有区别的,两者是对字符指针初变量string初始化,把字符串第一个元素的地址赋给string。
注意不要误认为是把整个字符串赋给指针变量
string

整体赋值法只能用于初始化过程,不能用于其他赋值操作。例如以下是错的:
char str[10];
str="china";
而cha