【发布时间】:2017-09-23 14:22:01
【问题描述】:
我使用的 Visual Studio 2015 没有显示与我使用指针相关的编译器警告。如果我暂时指的是指向数组char name[] = "My Name" 的指针char* p,我没有任何指导说明以下内容并不完全相同;即导致指向数组第一个字符的指针
char* pname = name; // points to first char in array
printf("\n%c\n", *pname);
pname = &name; // points to first char in array
printf("\n%c\n", *pname);
pname = &name[0]; // this explicitly points to the first char in the array
printf("\n%c\n", *pname);
每个printf 的结果都是相同的值,因为我没有看到编译器警告,所以我需要指导哪种格式是正确的。
这与指向 int 的指针相同,因此我没有看到编译器警告,因此我假设以下内容是等效的
int age = 45;
int* page = &age; // point to age
page = age // pointer to age
有人可以澄清这一点,或者帮助我在 Visual Studio 2015 中打开编译器警告,而无需切换到 TDM GCC + Eclipse Oxygen。
要点 - 语法具体并更正所有警告
【问题讨论】:
-
The following will also work page = age;不,不会 -
请编译您的代码并查看警告/错误。您将得到答案
-
认真对待编译器的警告。 C 是一门成熟的语言,它希望它的用户行为相同。
-
也许问题是我使用 Visual Studio 而不是 TDM GCC 和 Eclipse。如何启用编译器警告?另外,如果它们只是警告而不是错误,我的目标是确保在执行程序之前纠正所有警告吗?
-
“确保在执行程序之前纠正所有警告?”是的,完全正确。提示:不要盲目地“抛弃”警告。
标签: c pointers address-operator