我看到一個非常奇怪的代碼片段,我不太清楚,如果我的理解是正確的:指針運算C和澆鑄
#include <stdio.h>
int main(char *argc, char **argv)
{
char a[50];
*(char *) (a + 2) = 'b'; // <== THE LINE WHICH CONFUSES ME
printf("value: %c\n", a[2]);
return 1;
}
是不是正確的,我們走2桶進一步施放「B」變成一個指向b的指針然後解引用它?
你已經有了一些很好的答案。請記住,使用C語言,您可以享受安全編碼和指針算術的優勢 - 只需選擇您想要的那個:) –
'argc'參數實際上應該是'int'。在那裏有計算機,'int'和'char *'具有不同的表示,使你的程序行爲非常不明確。你也不用'argc'或'argv'做任何事情,所以最簡單的事情就是不要聲明它們:'int main(void){/ * ... * /}'。還有一點是,不同操作系統可以對返回值1進行不同的解釋。首選'返回0;'或'返回EXIT_SUCCESS;'或'返回EXIT_FAILURE;'。 – pmg