c语言指针和二维数组
二维数组与指针
指针是二维数组的首地址,二维数组本身就是指针。二维数组:本质上是以数组作为数组元素的数组,即"数组的数组",二维数组又称为矩阵,行列数相等的矩阵称变方阵。指针:在计算机科学中,指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。 在高级语言中,指针有效地...
C 语言指针的指针和二维数组的区别?
指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针 补充说明下隐式转化为指针,简单说就是这样(T是任意类型)设有一个数组T a[10];a的类型是“...
二维数组与指针的指针有何区别
最大的区别是数组不能被直接赋值,比如二维数组a[3][3],b[3],你不能这样赋值:a[0]=b;但指针可以。其次,就像一楼说的,数组一开始就被分配特定空间,指针值赋予一个地址。最后,数组分配的是一段连续的空间,int a[3][3]则a[0][0],a[0][1],a[0][2],a[1][0]...a[2][2...
C语言程序设计中"二维数组中元素指针的表示"的例题,求详解
⑴ 用指针表示二维数组元素。要用指针处理二维数组,首先要解决从存储的角度对二维数组的认识问题。一个二维数组在计算机中存储时,是按行存储的,即先存储第一行的元素,再存储第二行的元素。当把每一行看作一个整体,即作为一个大的数组元素时,原来的二维数组也就变成一个一维数组了。而每个大数组...
二维数组和指针的一个疑问。
a是一个二级指针,也成为行指针。它是一个常量指针。对a操作就使指针指向其他行。比如a+1就指向了第一行。a是一级指针,(a+1)是第一行首个元素的地址,相当于于a[1]。a是内容。(*(a+1)+1)是第一行第一个元素,相当于a[1][1]。这里a与*a相同,可以类比为一个函数int max()和一个...
C语言中二维数组行指针是什么
对于二维数组array[4][3],与int* p 。二维数组名array 不能直接赋值给p。原因前面已讲过,两只的对象性质不同。 在C语言中,可以通过定义一个行数组指针,使得这个指针与二维数组名具有同样的性质,实现它们之间可以直接赋值。行数组指针定义如下:int (*p)[3]; 它表示,数组 *p 具有三个int类型...
求c语言指针方式引用二维数组问题
a[0]代表第一组首元素地址,当然,a[0]也指向数组首元素的地址,a[0]=&a[0][0];a是对a取值,它取出的是a[0],当然=&a[0][0];&a[0]指a[0]的地址,还是它自己,所以&a[0]=&a[0][0]。所以,第一行个打印语句输出的5个内容都是一样的,所以,输出5个19ff0c。是a[0][0...
C语言 指针二维数组怎么初始化
1、数组指针初始化方法:int (*p)[4];char a[3][4];p=a;p=&a[0];p=a+1;p=&a[1]; \/\/都正确 p=a[0]; \/\/错误 p=a[1]; \/\/错误。2、首先,指针p表示的是,指向一个含有4个元素的一维数组的指针,因此,必须把一个含有4个元数的数组的地址赋给指针p才会正确。因为二维数组...
c语言中,关于指针int(*p)[4]和int*p指向二维数组a[3][4]初始化的问题...
p指向一个N列二维数组的首地址 p自增1,p指向下一“行”一维数组的首地址 因为p是一个二级指针。所以索引其指向的数据内容需要取二次内容,格式及解释如下:格式:*(*(p+行)+列)解释:其实很好理解,因为p作为二级指针,p++代表的仅仅是行号+1所以格式中*(p+行)就取到了所在行首地址指针(...
c++求解释下面式子中*((a+1)[1])=*(*((a+1)+1))怎么来的
二维数组和指针1、二维数组和数组元素的地址若有以下定义:int *p, a[3][4];1)二维数组a由若干个一维数组组成在C语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。如以上定义的a数组,则可视a数组由a[0]、a[1]、a[2]等三个元素组成,而a[0]、a[1]...
宁国市双仁回答: 1、首先我们打开电脑里的C语言软件,新建一个工程和.c文件,输入头文件和主函数. 2、然后我们输入图示代码初始化数组,定义变量类型. 3、然后我们输入图示代码用for语句实现数组的访问. 4、然后我们输入图示代码进行输出. 5、然后我们输入图示代码编译、运行,即可通过二级指针来操作二维数组.
斋帖19212451520问: C语言指针与二维数组求解 - ?
宁国市双仁回答: 假设a是一个二维数组, 则 一、a【0】是第一个一维数组名,数组名 就是该数组的 首地址! 二、*(a+0)和*a都表示这个一维数组第一个元素的内容; 这句话有问题,应该是:都表示这个 二维数组 第一个元素的内容! 三、&a【0】和a【0】好...
斋帖19212451520问: C 语言指针的指针和二维数组的区别? - ?
宁国市双仁回答: 指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针 补充说明下隐式转化为指针,简单说...
斋帖19212451520问: C语言中“二维数组行指针”是什么意思? - ?
宁国市双仁回答: 数组名就是一个指针常量,它代表数组元素在内存相关信息.1、C语言 是一门通用计算机编程语言,应用广泛.C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行...
斋帖19212451520问: C语言,二维数组和指针 - ?
宁国市双仁回答: 有必要对a[i]的性质作进一步说明.a[i]从形式上看是a数组中的第i个元素.如果a是一维数组名,则a[i]代表a数组第i个元素所占的内存单元的内容.a[i]是有物理地址的,是占内存单元的.但如果a是二维数组,则a[i]是代表一维数组名.它只是...
斋帖19212451520问: C语言指针及二维数组 - ?
宁国市双仁回答: 一、p是存放float型数据的地址,而11是整型数据,当然不能做比较 二、因为pend也是地址 如: p指向地址0x0012FF60 pend = p的话,pend也为0x0012FF60 pend = p+1,则p指向0x0012FF64 因为float占4个byte pend=p+2 0x0012FF68 ...三 ...
斋帖19212451520问: c语言,c语言中指针数组元素与一般么指针变量有什么区别?为什么一般的指针不能指向二维数组,而一个指 - ?
宁国市双仁回答: 1. c语言中指针数组元素与一般么指针变量没有区别 例如:int * a[10] ; int * p; int data=0; 则 a[0]=&data; p=&data;都是可以的2. 为什么一般的指针不能指向二维数组,而一个指针数组元素却可以?我觉得你的这个问题问的有问题,应该是问:为什么一般的指针不能指向二维数组,而一个指向数组的指针变量却可以吧?例如:int (* pa)[10][10] ;//定义一个指向整型二维数组的指针 int * p; int data[10][10]; 则 pa=&data;//可以 而 p=&data;//不可以
斋帖19212451520问: c语言的指针二维数组 - ?
宁国市双仁回答: #include <stdio.h> main() { int x[3][6] = {{1,2,3},{4,5,6},{7,8,9}}; int *p,s = 0,k; p = x[0]; for (k = 0;k < 6;k++) s = s + *(*(p + 1) + k); printf("%d\n",s); } /* 这个程序是无法编译通过的,改动后的程序如上.即使如此,语句 s = s + *(*(p + 1) + k) 仍有error C2100: illegal indirection(非法间接调用错误).*/
斋帖19212451520问: C语言二维数组与指针 - ?
宁国市双仁回答: B答案是正确的,因为二维数组名相当于二级指针,用二级指针(w)来表示元素的必须有两个(*)号:A *(*w+3) ()的优先级高于*,所以*w是列指针(一级指针) (*w+3)是列上加3,也就是移到第三列 *(*w+3...
斋帖19212451520问: C语言指针和二维数组 - ?
宁国市双仁回答: 首先,你下面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;//这...