您的位置:

关于c语言列指针,关于指针的C语言题

本文目录一览:

C语言:行指针与列指针,探究探究!

1.行指针与列指针区别是否是+1上的不同,例如a[0]+1是指a[0][1]的地址

而a[0]+1是指a[1][0]的地址!除了上面还有其他的行指针与列指针表示方法吗?只要有其功能就可!

——本质上不存在任何区别,n维数组的存储空间都是连续的,只不静态声明数组时,编译器帮你生成了根据下表访问特定元素的代码,如a[3][3],使用a[1][2]则编译器帮你生成*(a+(3*1)+2)的指针访问代码,所以对于二维数组,设n,m分别为其一、二维,行指针:a+(n*行数),列指针:a+列数,在该位置的元素:a+(n*行数)+列数,不过用这种思维来理解数组欠妥,特别是维数多的时候。

2.**a,*a[0]是否别代表a[0][0]这个元素,是否就代表a可以当作指针,还是有其他的

区别!能讲一点也好?

——不代表,a本身就是指针,而且是个值不能改变的指针,除非数组的元素是指针或多阶指针

3.正如上面所说,a,a[0],a[0][0]是指同一个地址,除了上述+1区别,还有么?(可以从用法或其他方面说)

——转变思维方法,数组是线性存储,就线性地去理解它

4.数组a[3][3],为何这个不可以for(i=0;i9;i++)

scanf("%d",a++);

for(i=0;i9;i++)

scanf("%d",a+i);可以呢?

区别在哪?

——a是个不能改变值得指针,所以a++肯定是错的

关于c语言列指针

int二维数组在内存中没有所谓的列, 它是一段"连续"的内存空间,

正因为是连续的, 所以才要用p[i*n+j]来寻址

c语言中的列指针是指向元素的指针吗,怎么区别行指针与列指针

二维数组的数组名a和a+1、a+2是行指针,它指向的元素是一个包含4个元素的一维数组,而*a、*(a+1)、*(a+2)是列指针,即指向元素的指针,相当于一维数组中指向特定元素的指针。*(*(a+1)+2)是先竖着走一行,再横着走两行,相当于a[1][2]。a[1][0]就是a[1][0]的地址,相当于*(a+1),是一个列指针。

关于C语言的指针和列阵

标准的答案!这个问题可以这么来解释:首先,列阵只是一个人为的表示,在计算机中,列阵实际是按照地址,顺序进行分配的;它是一段顺序的存储空间,按照地址由高到低排列,或者由低到高排列。而C语言中的指针,它其实也是一个地址,准确的说:它是地址的志向。指针之所以会和列阵联系在一起,是因为通过指针,能够很方便的访问到列阵中的每一个元素,而且这种访问的效率通常是比较高的,也是比较简单和容易实现的。至于a[0]和p,a是数组名,代表该数组的首地址,只不过它是一个指针常量,它不能自加自减,例如:a++,++a都是错误的;而p是一个指针变量,它可以自加自减;这二者是有区别的。

C语言行指针和列指针

在任何时候都不能寻址, 它是用来取地址的.

p[i]在任何时候都等价于*(p+i)

p[i][j] (其中p是int*[x]类型的)在任何时候都等价于*(*(i*x)+j)

x是一个变量.

int a[10][20]

这里x = 20

int a[20][10]

这里x = 10

C语言没有什么行指针, 列指针.

一维数组就是一级指针,

二维数组是特殊的二级指针,

以此类推......

c语言指针变量中行指针和列指针是什么?要如何使用?

对于一个二维数组:

int a[3][5];

a即是它的行指针,a+0表示第0行的地址,a+1表示第1行地址…

a[row]+col即列指针,列指针经过一次解引用就可以转化成二维数组中实际的值,列指针也是指向非常量的常量指针。