char *p = "a";
是有效的,但不是int *p = 2;
,char *p = 'a';
为什么他们是这样设计的?
问问题
207 次
3 回答
4
里面写的任何东西都" "
被认为是C.So中的字符串
char *p = " a"
表示您正在将字符串的基地址传递给 char 指针。这是有效的。
int *p
sayp
是一个指向整数的指针,因此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 |
+----+ +----+----+
而2
and'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 回答