sav*_*v0h 7 c pointers variable-assignment
我不明白这种情况的区别:
#include <stdio.h>
int main()
{
int i = 0;
i = 1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这种情况:
#include <stdio.h>
int main()
{
char *mychar = "H";
*mychar = "E";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这会产生编译器警告"赋值使指针在没有强制转换的情况下生成整数".
不应该*mychar = "E"取消引用mychar为其赋值"E"?
非常感谢.
你混淆了一些事情.
const char[]哪个存储'E'和'\0'.它不是一个单一的角色.对于单个字符,你使用'',就像'E'.mychar 指向字符串文字,您不能更改字符串文字.如果您的想法是这样的:
char *mychar = "H";
mychar = "E";
Run Code Online (Sandbox Code Playgroud)
这没关系,你没有改变字符串文字,只是第一次指针mychar指向字符串文字"H",然后指向"E".
这你不能这样做:
char *mychar = "Hello";
*mychar = 'E'; // Can't modify the string literal
Run Code Online (Sandbox Code Playgroud)
但是你可以这样做:
char c = 0;
char *mychar = &c;
*mychar = 'E'; // This is ok
Run Code Online (Sandbox Code Playgroud)
“E”是字符串文字 (char*),“E”是字符文字 (char)。
请注意,您正在比较的两段代码并不相似!两段代码(int vs char*)之间的区别如果你写的话会更清楚
char* mychar = "H";
*mychar = "E";
Run Code Online (Sandbox Code Playgroud)
int示例对应的类型是(char*)。也就是说,类似于“int”示例的代码是
char* mychar = "H";
mychar = "E";
Run Code Online (Sandbox Code Playgroud)