c语言二维数组

Python024

c语言二维数组,第1张

这个就是指针数组和数组指针的区别了,我当年也在这里转了很久,希望我下面所说得可以帮到你。首先,明确编译器是怎么识别*s[]和(*s)[]两种形式的代码的。对于*s[],编译器会以默认的右结合的方式进行识别,所以首先识别s[],这是一个数组,然后再识别*,说明这个数组的元素都是指针。所以最后的结果就是:这是一个“以指针为元素的数组”,简称指针数组。而对于(*s)[],由于()的优先级高于*,所以编译器会先识别()里面的,也就是先识别*s,所以它是一个指针,然后()说明这个指针指向的是一个数组,所以最后的结果是:这是一个“指向数组的指针”,简称数组指针。好吧,我承认一点,就是这两个东西看起来复杂,但是其实用起来区别不大,最本质的东西就是,指针数组用到多个指针,数组指针就完全是一个指针跑天下。看下面一段代码(我偷懒用C++写的,反正这个不是重点):#includeusingnamespacestdintmain(){//指针数组*a[2]intt1[3]={0,1,2}intt2[3]={3,4,5}intt3[3]={6,7,8}int*a[3]a[0]=t1//一个指针赋值a[1]=t2//第二个指针赋值a[2]=t3//第三个指针赋值//数组指针(*b)[3]int(*b)[3]=newint[3][3]for(inti=0i<3i++)for(intj=0j<3j++)*(*(b+i)+j)=i*3+j//一个指针跑天下cout<<*((*b)+1)<<""<<*(*(b+1))<<endlsystem("pause")return0}最后我想说,其实这个做题的时候有用,自己写的时候还是尽量直接用int[n][m]的方式比较方便,稍微浪费点空间问题不大,重要的是看起来好看,不容易出错。

c语言中直接输出一个二维数组是用数组来访问输出的,例子:

#include<stdio.h>

#define M 4

#define N 3

void main()

{

int a[M][N],i,j

for(i=0i<Mi++)

for(j=0j<Nj++)

a[i][j]=3*i+j

for(i=0i<Mi++)

{ for(j=0j<Nj++)

printf("%d\t",a[i][j])//直接用数组来访问

printf("\n")

}

}

除了可以直接访问,也可以用指针来访问,用指针指向该数组,便可进行对数组的读写操作。

运行结果图:

数组的学习首先要了解数组的概念,其实质就是具有相同特征的一类事的集合!

学习数组还要控制好循环!只有循环控制得好,才能发挥数组的特征!

值得注意的东东就是数组是从0角标开始的,角标从0到n-1

例如

int a【2】中包括两个元素a【0】和a【1】,而没有a【2】

二维数组也是同样的问题

int a【2】【2】中包括四个元素,a【0】【0】,a[0][1],a[1][0],a[1][1].