关于数组名和对数组名取地址

it2022-05-05  144

先看题:

#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include<string.h> typedef unsigned char BYTE; int _tmain(int argc, _TCHAR* argv[]) { int a[10]; int *p = a; printf("%d, %d\n", (int*)(a+1)-p, (int*)(&a+1)-p); return 0; }

运行结果:

1,10

 

解析:

数组名等价于指向a[0]的指针,为指向数组元素类型的指针,+1偏移一个数组元素;数组名取地址后,为指向该数组类型的数组指针,+1会偏移整个数组长度。&a相当于是二维数组的首行地址。


最新回复(0)