2

char *p = "a";是有效的,但不是int *p = 2;char *p = 'a';为什么他们是这样设计的?

4

3 回答 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';

注意:在中,char 常量是 int 类型,但不是char refrence

于 2013-07-02T15:48:30.150 回答
1

因为"a"有 的 类型char *,2没有 的 类型int *。注意char *p = 'a'也是无效的。

于 2013-07-02T15:47:53.483 回答