在C,我有:瞭解指針。 ?什麼是*((字符**)等於
char *p, *q;
p = malloc(1); //for the purpose testing only
p[0] = '!';
q = *((char **)p);
printf("p=%x q=%x\n", p, q);
printf("p=%c q=%c\n", p, q);
目前還沒有鑄造警告,並輸出結果是:
p=1a9008 q=21
p q=!
的表達會發生什麼分配給q
,即*((char **)p)
有q
類型分配後改變
編輯:?有一個犯錯或者在我的代碼中。在嘗試從代碼片段中提取它時,我遇到了一個完整的工作示例,我錯誤地使用了一個類型爲char的示例值p。在檢查了更多的原始代碼之後,p被分配了一個指針值。所以p是一個指針指針。
當程序員使用一個強制轉換時,他們通常做錯了什麼 –
該行基本上是無意義的 - 它調用**未定義的行爲**。 –
感謝所有。這是我找到的一些代碼,並試圖找出它在做什麼。 (我是C的新手) –