我看到一个非常奇怪的代码片段,我不太清楚,如果我的理解是正确的:指针运算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