我在操作 ac 代码中的一些指针时发现了一些我无法理解的东西。
int main(){
int tab[]={4,6,8,9,20};
printf("%p %p",tab,&tab);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试打印变量选项卡及其地址,知道选项卡保存数组中第一个元素的地址,并且选项卡本身的地址将是一个随机地址值,但无论出于何种原因,程序输出相同的值,我发现这真的很奇怪,所以如果有人能向我解释原因,我将不胜感激。
如果我们画出数组和指向它的公共指针,它看起来会像这样:
+--------+--------+--------+--------+--------+ | 选项卡[0] | 选项卡[1] | 选项卡[2] | 选项卡[3] | 选项卡[4] | +--------+--------+--------+--------+--------+ ^ | &标签 | 选项卡[0]
指针 、&tab和&tab[0](这就是简单的tab 衰减)都指向同一位置。
但类型不同:&tab是指向数组的指针,并且具有类型int (*)[5],而&tab[0]是指向单个元素的指针int,因此具有类型int *。