字符串赋值问题

来源:百度知道 编辑:UC知道 时间:2024/05/04 12:06:58
A.char *s;s="abcd";
B.char *s;scanf("%s",s);
以上哪条是不能顺利赋值的,请说出原因

B.char *s;scanf("%s",s);
这里定义了s是一个指向字符的指针变量,但是没有初始化。指针定义后在使用前必须初始化,要不然就是野指针,即它不具体指在内存中的任何位置。这样的话给它赋值这些值就找不到具体位置存放,操作失效。

而char *s;s="abcd";中s指在字符串常量"abcd"的第一个字符a的位置上,s的值指定了(即s就是字符a的地址),也就是初始化了。