字符数组跟字符串数组问题
https://static01.imgkr.com/temp/ea0e44e7a5fe42808c5778abd287da34.jpg请问4为什么不可以,因为是字符不是字符数组吗 ①和②都是错的 '\0' 本帖最后由 傻眼貓咪 于 2022-5-24 18:06 编辑
答案是 1 和 3 是正确的:#include <stdio.h>
int main()
{
char *a;
a = "string";
char b = "string";
// b = "string"; 不能这样写
char c[] = "string";
char d[] = { 's', 't', 'r', 'i', 'n', 'g', '\0' };
// char d[] = { 's', 't', 'r', 'i', 'n', 'g' }; 不能这样写
printf("%s\n", a);
printf("%s\n", b);
printf("%s\n", c);
printf("%s\n", d);
return 0;
}string
string
string
string wp231957 发表于 2022-5-24 17:56
①和②都是错的
1把字符串常量的指针赋值给s没错
傻眼貓咪 发表于 2022-5-24 18:03
答案是 1 和 3 是正确的:
char *a;
a = "string";
这样也可以吗
我记得char *a = "string";这样可以 wp231957 发表于 2022-5-24 18:07
char *a;
a = "string";
这样也可以吗
可以,char *a 很多人都误会了以为是字符串,其实是指针
指针可以改变的,右值不能改变。 傻眼貓咪 发表于 2022-5-24 18:09
可以,char *a 很多人都误会了以为是字符串,其实是指针
指针可以改变的,右值不能改变。
a = "string";这个一旦赋完值就固定死了,再也无法改变??? 本帖最后由 傻眼貓咪 于 2022-5-24 18:19 编辑
wp231957 发表于 2022-5-24 18:12
a = "string";这个一旦赋完值就固定死了,再也无法改变???
没有,可以改变指针指向
#include <stdio.h>
int main()
{
char *a;
a = "string";
printf("%s\n", a);
a = "banana";
printf("%s\n", a);
return 0;
}
string
banana 傻眼貓咪 发表于 2022-5-24 18:17
没有,可以改变指针指向
这有些颠覆我的认知,我的认知 字符串常量不可修改啊 改日我一定要亲自测试
多谢 wp231957 发表于 2022-5-24 18:21
这有些颠覆我的认知,改日我一定要亲自测试
多谢
不客气 {:10_254:}{:10_254:}
页:
[1]