2011-03-09 217 views
2
//if the following code works 
char *ptr=a+12; 
//why doesnt this work 
char *(ptr=a+12); 
+2

學會接受答案 – 2011-03-09 11:16:55

回答

2

因爲(ptr=a+12)不是變量的有效名稱。你想要達到什麼目的?

0

char * ptr;聲明一個變量,=a+12給它一個值。你在做什麼沒有意義,變量必須存在才能賦值。你想達到什麼目的?

這將是有效的。

char * foo; 
char * ptr = (foo = a + 12); 
0

因爲你聲明瞭一個指針的整個表達式,這是沒有意義的。指針必須是一個變量。

2

因爲char *ptr=a+12;是一個聲明與初始化和char *(ptr=a+12);是......好吧,沒什麼。

但這會奏效。

char* ptr; 
ptr = a+12; 
char x = *(ptr = a+12); 
0

()具有更高優先級。因此,表達式首先評估並且不是有效的lvalue分配給。

0

char* ptr = a + 12;聲明並定義了一個指向char的指針,指向a之後的12個字符。

char* (ptr = a + 12);嘗試將值(a + 12)賦值給指針ptr,然後將其解引用以生成值。但Type value是無效語法(如int 0;char 'x';無效),並且ptr從未被聲明/定義。

總之,這是完全沒有意義的。