2011-03-08 102 views
1

可能重复:
character pointers字符指针

难道不是'a'被解码为它的ASCII码值和下面的语句变成相当于char *pch= 197。现在pch将指向字符的地址位置197

char *pch='a'; //if not then what does this statement mean 
+0

什么是197?内存地址?这个地址是否属于该程序? – Nawaz 2011-03-08 11:41:39

+0

我怀疑是否将它作为确切的重复或不是真正的问题关闭它。如果在'重复'中有某些你不明白的地方,请提供一个合理的问题。这就像是一个声明。 – 2011-03-08 12:26:31

回答

2

此语句将无法编译char *pch='a';。您正试图将ascii字符'a'指定给char!

您是不是要找char *pch="a";

为什么你要访问的位置197. 在大多数PC到0页面的任何访问提高内存冲突。

+0

+1'char * pch =“a”;'有意义 – 2011-03-08 11:43:49

+0

@sarnold:它在C中编译,但问题标记为C++,而在C++中这是一个错误。 – 2011-03-08 11:48:13

+0

@sarnold:不,它*不*:http://ideone.com/etzze – rubenvb 2011-03-08 11:48:22

2

这行不应该编译,至少在C++中。

在这一行中,您创建了一个指向名称为'pch'的字符(char *)的指针。然后,您尝试将其初始化为字符'a' - 这是不可能的,因为指针只能用某个对象的地址或空指针(0)初始化。

我认为在C中它也是非法的,但我不确定它。

如果你想设置的PCH变量指向的位置地址197下,你可以尝试以下之一:

char *pch = (char *) 197; 
char *pch = reinterpret_cast<char*>(197); // C++ only 
+0

它初始化一个指针,但它不会让你走得很远,因为地址197处的内存不太可能成为程序的一部分。不要在家里试试这个孩子! – 2011-03-08 17:31:30

1

基本上,

你存储一个char在C中无效的指针中。

指针应该保存其类型的地址。 但不是它的类型的值。