我了解指针的基本工作原理,但以下示例让我感到困惑。
int *myNum = 10; // Produces an error
char *myChar = "Something"; // Works fine
为什么赋值char可以工作但整数不行(可能是因为char被视为一个数组)?
还有就是当直接分配一个指针变量时,我感到困惑的是,它是否会自动获取地址?
char *myChar = "Something";
和
char myChar = "Something";
char *charAddr = &myChar;
这里会有什么区别,还是相等?
char myChar = "Something";
不可行,因为"Something"
不是一个字符。 - user253751"Something"
无法隐式转换为char
。char myChar = 5.5;
是合法的。 - M.Mint *myNum = 10;
和char *myChar = 'A';
都是错误的。单引号用于字符,双引号用于常量字符数组,也称为C字符串字面值。话虽如此,char *myChar = "Something";
只有一半是正确的,正如其他人指出的那样。严格的编译器将要求您声明const char *myChar
,因为在现代架构中,您不能写入由myChar
指向的数组元素。 - Peter - Reinstate Monica