c语言,char a[10],*p; p=a=”china”; 为什么是错的?请详解 char a[10],*p;p=a="china"错在哪了?
c\u8bed\u8a00\uff0cchar a[10],*p; p=a=\u201dchina\u201d; \u4e3a\u4ec0\u4e48\u662f\u9519\u7684\uff1f\u8bf7\u8be6\u89e3a\u8868\u793a\u6570\u7ec4\u7684\u9996\u5730\u5740
p\u662f\u4e00\u4e2a\u6307\u9488\u53d8\u91cf\uff0c\u53ef\u4ee5\u5c06\u6570\u7ec4\u7684\u9996\u5730\u5740\u8d4b\u503c\u7ed9p,
\u6240\u4ee5p=a;\u662f\u6b63\u786e\u7684
\u4f46\u662fa=
"china"\u5374\u4e0d\u884c\uff0c\u56e0\u4e3a\u5b57\u7b26\u6570\u7ec4a\u662f\u4f5c\u4e3a\u5b57\u7b26\u4e32\u5e38\u91cf\u5b58\u5728\u7684\uff0c\u53ea\u80fd\u5728\u5b9a\u4e49\u7684\u65f6\u5019\u8d4b\u503c\uff0c
\u4e0d\u80fd\u50cf\u8fd9\u6837\u5728\u540e\u9762\u5bf9\u6570\u7ec4\u8fdb\u884c\u8d4b\u503c\u64cd\u4f5c
p=a\u662f\u5bf9\u7684\uff01\u4e5f\u53ef\u4ee5\u5199\u6210p=&a[0]
p\u662f\u6307\u9488\uff0c\u6307\u5411\u4e00\u4e2a\u5730\u5740\uff0c\u6570\u7ec4\u540d\u5c31\u662f\u5b83\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\u7684\u5730\u5740\u3002
a="china"\u628a\u5b57\u7b26\u4e32\u8d4b\u503c\u7ed9\u4e00\u4e2a\u5730\u5740\uff0c\u663e\u7136\u662f\u4e0d\u5bf9\u7684\uff01
\u53ef\u4ee5\u8fd9\u6837char
a[10]="china",\u6216\u662f*p="china"
p是一个指针变量,可以将数组的首地址赋值给p, 所以p=a;是正确的
但是a= "china"却不行,因为字符数组a是作为字符串常量存在的,只能在定义的时候赋值,
不能像这样在后面对数组进行赋值操作
这里的错误是:数组是不能整体引用的,不能a="china";,应该是a[]="china";程序应该改成:char a[10],*p;a[]="china";p=a;
应该选d。p是指针变量名,可以把地址赋给指针变量,只能逐个引用数组元素的值而不能整体引用,更不能对整个数组进行自增或自减,没有c这种初始化形式,d是用自符串常量来初始自符数组,前三个元素为mba,第四个为反斜杠0,后六个为空自符。
p是指针,不能直接赋值
可以如下赋值:
char a[10],*p;
a="china";
p=a;
p和s都是地址,所以不能赋值China,只能同样赋值一个地址
扩展阅读:char c 72 ... c代码中const char ... int ... const char*和char*的区别 ... c语言中char str[10] ... c语言const char与char ... char c 65 ... strlen ... c语言中的char grade ...