char *p = "a";是有效的,但不是int *p = 2;,char *p = 'a';为什么他们是这样设计的?
3 回答
4
里面写的任何东西都" "被认为是C.So中的字符串
char *p = " a"表示您正在将字符串的基地址传递给 char 指针。这是有效的。
int *psayp是一个指向整数的指针,因此p可以保存整数的地址,因此int *p = 2无效。
同样char *p是指向字符的指针,因此p可以保存字符的地址,因此char *p = 'a'无效,因为'a'只是字符而不是字符的地址。
于 2013-07-02T16:21:41.090 回答
3
一个 typeof 字符串字面量是 ofchar[n]并且赋值char*是好的。
点是两者都是指针。
char *p = "a";表示p指向字符串"a"(在内存中的某些位置,类型为"a"is char[2])。
p 23 24
+----+ +----+----+
| 23 | | a | \0 |
+----+ +----+----+
而2and'a'是 int 类型值,不是有效地址,因此以下声明是错误/警告:"initialization makes pointer from integer without a cast"
int *p = 2; and
char *p = 'a';
于 2013-07-02T15:48:30.150 回答
1
因为"a"有 的 类型char *,2没有 的 类型int *。注意char *p = 'a'也是无效的。
于 2013-07-02T15:47:53.483 回答