【发布时间】:2016-02-01 16:44:18
【问题描述】:
让我们使用 64 位机器
在 64 位机器中指针为 8 字节
int *p ; // it is a pointer to integer variable so when i increment p
// i.e., p++ it will increment by 4
char *r; // It is pointer to character .
// So if i increment 'r' it will increment by 1
int **q ; // if i increment q ie.,q++ it will increment 8 bytes
我尝试了这种和平的代码,如果有任何问题请纠正我
int a=10;
int *p;
char *r;
int **q;
p=&a;
q=&p;
printf("p= %p\t r= %p\t q=%p\n",p,r,q);
printf("p(increment)= %p\t r (increment)= %p\tq (increment)= %p ",++p,++r,++q);
输出
p= 0x7fff669bb1bc r= 0x7fff669bb2a0 q=0x7fff669bb1a0
p(increment)= 0x7fff669bb1c0 r (increment)= 0x7fff669bb2a1 q (increment)= 0x7fff669bb1a8
int/char/float在双指针中的作用是什么?
【问题讨论】:
-
对不起,这是新行 int **q ; // 如果我增加 q ie.,q++ 它将增加 8 个字节 int/char/float 在双指针中的作用是什么?提前致谢
-
where pointer is of 8 bytes in 64 bit machine你确定吗,你试过 MSVC 了吗? -
在 linux 64 位机器指针大小为 8
-
在那台机器上。一般来说,指针没有大小保证。
-
@Vivek 是吗?你能告诉我一些可以保证的东西(引用)吗?
标签: c pointers types pointer-to-pointer