2011-03-08 112 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中無效的指針中。

指針應該保存其類型的地址。 但不是它的類型的值。