Viv*_*ek 1 c types pointers pointer-to-pointer
让我们采取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
Run Code Online (Sandbox Code Playgroud)
我试过这个代码的和平如果有任何错误请纠正我
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);
Run Code Online (Sandbox Code Playgroud)
产量
p= 0x7fff669bb1bc r= 0x7fff669bb2a0 q=0x7fff669bb1a0
p(increment)= 0x7fff669bb1c0 r (increment)= 0x7fff669bb2a1 q (increment)= 0x7fff669bb1a8
Run Code Online (Sandbox Code Playgroud)
int/ char/ float在双指针中的作用是什么?
引用后缀++运算符的属性,来自C11章节§6.5.2.4,后缀增量和减量运算符,(强调我的)
后缀
++运算符的结果是操作数的值.作为副作用,操作数对象的值递增(即,将相应类型的值1 添加到其中).[...]
在这种情况下int *p ;,p是指向类型的指针int,因此增量将基于sizeof(int)
在这种情况下int **p ;,p是指向类型的指针int *,因此增量将基于sizeof(int *)
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |