今天突然对指针二维指向感兴趣,然后自己去实验指针的指向。
首先,我对&取地址符,和*指向符号的了解。并去验证他
--想要达到的 **目的** 是:如何用一个指针去指向二维数组,然后不是假如像数组a[3][3],
指向第a[3][3]个的时候不是用从\*(q+1)--*(q+9)来一个一个叠加实现,而是通过*(q+行数)+列数来实现>
依稀我能记到老师讲的行指针和列指针,所以我想去实现这个想法,顺便对指针去理解。
怎么去实现:
##指针数组
介绍:数组名的指针,即数组首元素地址的指针。即是指向数组的指针。例:int (*p)[10]; p即为指向数组的指针,又称数组指针。
然后就可以实现“\*(\*(p+1)+1)”的效果了。
而一般情况下我们都知道一个东西指针\*(p+2)=p[2]=a[2];同样指针数组可是成为了p[1][1];
拓展1:数组指针
名字和指针数组的名字差不多,但是达到的效果是不同的:>数组指针的大概意思就是字面上的意思int *p[10]先p和【10】结合,之后在和指针结合,
意思就是有p[0],p[1]--到p[10]个指针!
拓展2:如下
int a[3][3] = { 0,1,2,3,4,5,6,7,8 };
int *q = a[0];
cout << "验证输出a[0]="<<a[0]<<"验证输出a="<<a << "&a="<<&a<<endl;
cout << "验证指针输出:q=" << q <<"\t &q="<< &q<<endl;
cout << "指针测试\t *q=" << *q << "\t\t *q+1=" << *q + 1 << "\t\t*(q+1)=" << *(q + 1) << "\t\t*(q+1)+2=" << *(q + 1)+2<< endl;
cout << "指针地址测试\t &*q=" << &*q << "\t &*q+1=" << &*q + 1 << "\t&*(q+1)=" << &*(q + 1) << "\t&*(q+1)+1=" << &*(q + 1) + 1 << endl;
cout << "指针再次测试*(&*(q + 1) + 1)=\t" << *(&*(q + 1) + 1) << endl;
代码是我在达到目的之前的拓展,因为想法的问题,出现了许多错误,下图是我代码下的图片。
—>之后我拓展出来的知识便是如下>>我学会的
1.指针*&q=q,地址的指向为地址存储的内容,多维数组的时候,N维-1的地址可以输出某个值
2.一般情况下,像如此的一维指针没有行列的变化–就只有单调的地址+++,以致输出(>除非使用指针数组)
除了这些之外,应该还有多维指针,引用。//int **q,&a–>a为变量,q为指针变量。
5103

被折叠的 条评论
为什么被折叠?



