可恶的C指针运算左右结合性质
Posted 之墨_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了可恶的C指针运算左右结合性质相关的知识,希望对你有一定的参考价值。
可恶的指针 |
#include<bits/stdc++.h>
using namespace std;
int main ()
int i ;
int * q ;
int * a [10];
int * (* b [10]) [10];
int * (*(* p ) [10]) [10];
i = 100; q = & i ; a [1] = q ; b [1] = & a ; p = & b ;
cout <<p[0][1][0][1][0]<< endl ; // 输出 100
cout <<*(*(*(*(*p+1))+1))<< endl ; // 输出 100
// 程序
a
a
a是一个具有
10
10
10个元素的数组,数组中每一个元素都是一个指向整形元素的指针
b
b
b是一个具有
10
10
10个元素的数组,该数组的每一个元素都是一个指针,并且指向一个具有
10
10
10个元素的数组,该数组的每一个元素都是一个指向整型数
p
p
p是一个指针,其指向一个具有
10
10
10个元素的数组,该数组每一个元素都是一个指针,指向一个具有
10
10
10个元素的数组,该数组每个元素都是一个指向整型元素的指针。
i = 100; q = & i ; a [1] = q ; b [1] = & a ; p = & b ;
p[0][1][0][1][0]
*(*(*(*(*p+1))+1))
p[0]=*p → p所指向的地址的内容即b的地址
p[0][1]=*(*p+1) → b的地址向右移一位容即b[1]对应的内容:&a
p[0][1][0]=*(*(*p+1)) → a的地址对应的内容
p[0][1][0][1]=*(*(*(*p+1))+1) → a的地址向右移一位即a[1]对应的内容:q=&i
p[0][1][0][1][0]=*(*(*(*(*p+1))+1)) → i地址对应的内容即100
以上是关于可恶的C指针运算左右结合性质的主要内容,如果未能解决你的问题,请参考以下文章