char x[16];
int y = 42 + 256;
char* p = &y;
int* q = p;
char** r = &p;
printf("%d %d %d\n", p, q, r);
Run Code Online (Sandbox Code Playgroud)
为什么r的值总是比p和q小12个单位?谢谢!
您打印的内容有三个内存地址.由于这些是在堆栈上分配的(假设它们不是全局的)我会期望类似:
2030 2026 2022
Run Code Online (Sandbox Code Playgroud)
假设一个32位机器和4个字节指针.
double *是指向指针的指针.如果使用正确的类型,它会变得更清晰.
char *str = "hello world";
Run Code Online (Sandbox Code Playgroud)
str 在这种情况下,是一个指向以null结尾的字符序列的指针.
char **p = &str;
Run Code Online (Sandbox Code Playgroud)
指向指向字符串的指针的指针.
我说"正确的类型",因为你有,例如:
int y = 42 + 256;
char* p = &y;
Run Code Online (Sandbox Code Playgroud)
真的应该是这样的:
int *p = &y;
Run Code Online (Sandbox Code Playgroud)
char *在这种情况下使用a的通常原因是检查各个字节.