本文目录一览

1,什么是一级指针和二级指针

一级指针就是指指针,就是内存地址,二级指针就是指向指针的指针,就是地址的地址,打个比方,你有一个箱子,里面有你要的东西,你的钥匙能打开箱子,钥匙就是一级指针,你要用钥匙打开别的箱子去拿到开你要的东西的箱子的钥,那你手上的钥匙就是二级指针,如此类推…

什么是一级指针和二级指针

2,C语言中二级指针有什么用哦

这个挺难表达的,我尽力表述下。 相信一位数组应该明白的吧?例A【0】画一个1列5行的表格(作为表格A) 二维数组呢。你可以先画个5行5列的表格(作为表格B)。A【1】【1】表达的第二行第二列。 而且A[0]在一维中表达是首地址,就是A表格中的第一行。但是在二维数组中就是表示表格B中整个第一行。 二级指针的话,估计我没学的太深入,不是很清楚。 希望能帮到你。如果有兴趣讨论国二C语言的话,可以加我。

C语言中二级指针有什么用哦

3,一级指针和二级指针的区别

第一 p1 和*p1 不同的是 p1是地址 *p1是指向地址的变量第二 p2 *p2 **p2前两个不说了 见第一 后两个**p2 就是指向*p2的地址 没什么好说的打印p2是地址 打印*p2是变量 **p2是地址 你要是会用动态二维数组指针 你就能明白了
一级指针就是指指针,就是内存地址,二级指针就是指向指针的指针,就是地址的地址,打个比方,你有一个箱子,里面有你要的东西,你的钥匙能打开箱子,钥匙就是一级指针,你要用钥匙打开别的箱子去拿到开你要的东西的箱子的钥,那你手上的钥匙就是二级指针,如此类推…

一级指针和二级指针的区别

4,怎么理解指向二维数组的数组指针是二级指针

一维数组的名其实就是指针,如int a[4]=但是二维数组 int aa[2][3]=实际上二维数组的第一维是int (*ab)[3],是个指针数组,不是数组指针。这个时候int (*ab)[3]是与 int **不同的。所以接受二维数组时要用 int (*ab)[3],不能用二级指针int**pp数组指针是int *ab[3]这种形式,ab先与[]结合,形成一个一维数组,这个数组的元素都是int*的指针,所以叫做数组指针。这个时候可以用int**p=ab;是对的。因为二级指针只能指向存有int*的位置,而数组内部都是int*的元素。所以数组指针就是二级指针。而二维数组不能直接作为二级指针。它是一维指针数组int (*ab)[]。这个指针数组解释就是首先是一个指针(*ab),然后是一个数组,存放int元素。可以用这个指针ab去访问,**ab第一个元素;*(*ab)[1]第二个元素。如果是二维数组指针int *ab[2][3];这个时候不能类推,用三级指针int***ppp=ab;是错误的。这个时候第一维其实是int*(*a)[3],是一个指针,然后是个数组,存放3个int* 元素。你不能将int*(*)[]类型直接等价于int***,理由与二维数组不能直接用二级指针表示一样。其实说这个有点多余了。
#include void main( ) { int a[3][2]={10,20,30,40,50,60}; int (*p1)[2]=a;//表示一个指向由2个元素组成的整型数组指针,对于二维数组就是列数,指向数组a int *p2[3]={a[0],a[1],a[2]};//指针数组很容易理解,每个元素都是指针 int i=0; for (;i<3;i++) { printf("%d\t%d\t",p2[i][0],p2[i][1],p2[i][2]); } printf("\n"); for (i=0;i<3;i++) for (int j=0;j<2;j++) { printf("%d\t",*(*(p1+i)+j));//a[i][j] } for (i=0;i<3;i++) for (int j=0;j<2;j++) { printf("%d\t",*(p1[i]+j));//a[i][j] } for (i=0;i<3;i++) for (int j=0;j<2;j++) { printf("%d\t",p1[i][j]);//也是 } }

5,一级指针还有二级指针还有指向行数组的指针之间的区别具体举个

我这里用int类型的指针为例:int *p; p=new int; 或是p=new int[5];通过一个指针可以创建一个实体或多个实体,并通过*p或者p[i]的形式来访问实体空间,也就是通过一个指针可以创建一行或是一列实体,也就是可以创建一个数组。现在试想:我想创建一个5*4的矩阵,我用指针创建数组怎么做?首先,每一行的创建需要一个int类型的指针,我现在要创建五行,所以我需要5个int 类型的指针。而5 个int类型的指针又可以组建一个数组实体个数是5,只不过这时实体变成了int*, 而先前创建的实体是int 数据。这个指针数组的创建就需要到二级指针也就是指向指针的指针:int **q; q=new int*[5]; q[0]=new int[4];完成了一行的创建,之后的各行类似,我不知道你说的指向行数组的指针是不是和这里的q[0]类似?如果是的话那么我觉得二级指针可以用来构建一个行数组指针。我写的不清楚的话,再来联系我讨论好了。学习需要坚持加油啊!
C菜鸟助手成员tonytvb为你解答(如有疑问请hi我或向我的团队提问):你大概是对指针不是很了解吧!这样得先让你对指针了解才行。1、指针指向的是地址我们知道内存存放数据是通过地址来访问的而指针就行相当于负责指向这个地址的作用如int a=10,系统会分配一个地址例如为1000那么我再定义一个int *p=&a;意思就是指向这个1000的地址但是如果我在这个基础上又想访问1000这个地址呢?其实1000你换个角度来想,这个地址其实也可以看作是一个数据那么1000这个地址可不可以又有一个地址指向它呢?答案是可以的,这就出现了所谓的二级指针了int **q=&p;意思就是指向这个1000的地址,假如地址为2000按这样下去是相当于可以生成无限的级别的指针的!所以理解了就可以了。而你所说的指向数组的指针就是相当于二级指针意思一样的,不懂再问!如有更多的疑问请hi我在这里给自己新创建的团队“C菜鸟助手”打个小广告,各位如果有C/C++方面不懂的可以一起讨论!不为分数,只为解决问题!谢谢,祝各位生活愉快!
参考答案:一:数组指针:数组名本身就是一个指针,指向数组的首地址。注意这是声明定长数组时,其数组名指向的数组首地址是常量。而声明数组并使某个指针指向其值指向某个数组的地址(不一定是首地址),指针取值可以改变。二:数组指针:是指向数组的一个指针,如int (*p)[10] 表示一个指向10个int元素的数组的一个指针。指针数组:一个数组,若其元素均为指针类型数据,称为指针数组。也就是说,指针数组中每一个元素都相当于一个指针变量。一维指针数组的定义形式为:类型名 *数组名[数组长度]例如:int *p[4]由于[]比*优先级更高,因此p先与[4]结合,形成p[4]的形式,这显然是数组形式。然后再与p前面的*结合,*表示此数组是指针类型的,每个数组元素都指向一个整型变量。数组指针

文章TAG:二级  指针  什么  一级  二级指针  
下一篇