Sad*_*que 3 c c++ arrays pointers declaration
当我执行此代码时
#include<stdio.h>
int main() {
int (*x)[5];
printf("\nx = %u\nx+1 = %u\n&x = %u\n&x + 1 = %u",x,x+1,&x,&x+1);
}
Run Code Online (Sandbox Code Playgroud)
这是C或C++中的输出:
x = 134513520
x+1 = 134513540
&x = 3221191940
&x + 1 = 3221191944
Run Code Online (Sandbox Code Playgroud)
请解释.还有什么区别:
int x[5]
和int (*x)[5]
?
int x[5]
是一个包含5个整数的数组int (*x)[5]
是一个指向 5个整数数组的指针增加指针时,会增加指向类型的大小.x+1
因此5*sizeof(int)
字节大于x
- 只给出8048370
和8048384
十六进制值的差值为0x14或20.
&x
是一个指向指针的指针 - 所以当你递增它时你添加sizeof(a pointer)
字节 - 这给出了bf9b08b4
和bf9b08b8
十六进制值,相差4.