char *pc = 'H';
上面的语句定义pc
了type char *
,这意味着它可以保存type对象的地址char
。您正在使用字符H
(另一种类型)对其进行初始化。请记住,字符文字是类型的,int
并且求值为其字符代码,在ASCII中为72
。因此,以上陈述等同于
char *pc = 72;
这是非法操作,编译器应对此发出警告(在gcc中,使用flag -Wall
)。您不应该直接为指针分配地址,因为您不知道是否可以访问内存地址。您应该使用address of
运算符&
获取对象的地址,然后将其分配给指针。
char *ps = "hello";
在上面的语句中,字符串文字计算为指向其第一个元素的指针。该地址被分配给ps
相同类型的地址char *
。但是,字符串文字在中是只读的,C
但没有const
限定(与中不同C++
),因此尝试使用指针修改字符串文字ps
不会导致编译器错误,但会导致未定义的行为以及最有可能由于segfault导致程序崩溃。因此,您应该定义ps
一个指向const的指针object
-
const char *ps = "hello";
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句