hyfm.net
当前位置:首页 >> C语言指针与二维数组 >>

C语言指针与二维数组

指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针 补充说明下隐式转化为指针,简单说

设二维数组为typename a[M][N],则指向该数组的指针为typename (*p)[N] = a;这样就可以用p来代替二维数组了.

b答案是正确的,因为二维数组名相当于二级指针,用二级指针(w)来表示元素的必须有两个(*)号:a *(*w+3) ()的优先级高于*,所以*w是列指针(一级指针) (*w+3)是列上加3,也就是移到第三列 *(*w+3)就是第一行第三列的元素值

3和2是一样的,也是会报错的.可以使用行指针double (*p)[3]=data;指向数组第0行,也就是我们平常理解的第一行.访问方式,假设data是i行j列,*(*(p+i)+j)就是第i行j列的元素值,也就是data[i][j]的值.也可以使用列指针double *p = data[0]指向第0行0列,访问方式如下:

首先,你下面for循环有误,不是for(j=0;i<2;j++)而是for(j=0;j<2;j++) 然后 过程的详细解释如下: #include<stdio.h> main() { int a[3][2],(*p)[2],i,j;//二维数组名是数组第一行元素的地址,也就是a为a[0]的地址 p=a; a[0][0]=1; p[0][1]=2;//这

有必要对a[i]的性质作进一步说明.a[i]从形式上看是a数组中的第i个元素.如果a是一维数组名,则a[i]代表a数组第i个元素所占的内存单元的内容.a[i]是有物理地址的,是占内存单元的.但如果a是二维数组,则a[i]是代表一维数组名.它只是

*(pia+i*3+j)指读取从pia开始第i*3+j个位置的值.因为你的a是一个2*3的数组,也就是a[i]代表一个有着三个元素的整数数组.在内存里二维数组是按照从高到低从左到有的顺序连续排列的,以你的数组为例:1 2 34 5 6那么在内存里这些的排列顺序就是1 2 3 4 5 6,而pia所指的就是1的位置.所以i*3+j就给出了从数组开头第i*3+j个元素的位置,也就是a[i][j]的位置.如果*是放在数字变量和常量的中间,它就代表乘号.如果放在一个指针变量的前面就代表提取符,pia+i*3+j给出了一个新的指针,用*提出它所指的值.

一、p是存放float型数据的地址,而11是整型数据,当然不能做比较二、因为pend也是地址 如: p指向地址0x0012FF60 pend = p的话,pend也为0x0012FF60 pend = p+1,则p指向0x0012FF64 因为float占4个byte pend=p+2 0x0012FF68 三

这个指针是一个 "行指针" 他唯一能指向一个 有 6 列(因为该指针定义时候下标为6) 的二维数组, 赋值的时候只要将数组名任意一行的首地址赋给它 你上面的x 是第0行的首地址 也可以将第一行的首地址给他 那就是p=a[1]; 但是不能将一个

要int **p=a;才行.因为int *p定义的p是指向int型变量的,而二维数组a表示指向数组的指针,也就是指向指针的指针,所以类型不同,不能直接赋值.

相关文档
xaairways.com | qmbl.net | ceqiong.net | nnpc.net | | 网站首页 | 网站地图
All rights reserved Powered by www.hyfm.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com