当我使用这段代码时,GCC给我一个'来自不兼容指针类型的初始化'警告(虽然代码工作正常并且做了它应该做的事情,它打印了数组的所有元素).
#include <stdio.h>
int main(void)
{
int arr[5] = {3, 0, 3, 4, 1};
int *p = &arr;
printf("%p\n%p\n\n", p);
for (int a = 0; a < 5; a++)
printf("%d ", *(p++));
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用这段代码时没有给出警告
int main(void)
{
int arr[5] = {3, 0, 3, 4, 1};
int *q = arr;
printf("%p\n%p\n\n", q);
for (int a = 0; a < 5; a++)
printf("%d ", *(q++));
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
这两个片段之间的唯一区别是我指定*p =&arr和*q = arr.