多语言展示
当前在线:1243今日阅读:39今日分享:10

【C语言-15】多维数组与指针

C语言中指针与数组的关系密不可分,同时C语言规定多维数组名也是一个指针,例如二维数组a[3][5],a[3]便是一个指针。那这又有怎样的应用呢?
工具/原料

C-Free

例:
1

打开C-Free,新建文件。

2

输入以下内容:#includemain() { char stu[4][4][10]; int i,j; printf('请输入4个项目\n'); for(j=0;j<4;j++){ printf('项目%d:',j+1); scanf('%s',stu[0][j]);  }  printf('请输入3个%s\n',stu[0][0]); for(j=1;j<4;j++){ printf('第%d个%s:',j,stu[0][0]); scanf('%s',stu[j][0]);  }  for(i=1;i<4;i++) for(j=1;j<4;j++){ printf('请输入%s的%s:',stu[i][0],stu[0][j]); scanf('%s',stu[i][j]);  }  printf('情况如下:\n'); for(i=0;i<4;i++){ for(j=0;j<4;j++)printf('\t%s',stu[i][j]);  printf('\n'); } }

3

运行结果如图:

说明:
1

char stu[4][4][10];这里定义了一个三维的字符数组总共有4x4x10个元素,但是例中,最后一维即[10]是用来储存字符串的,因此一共有4x4个项目。

2

在开始便提到过,对于二维数组a[3][5],a[3]是一个指针,因此stu[0][j]也是一个指针。

3

我们还记得scanf函数里有一个&,这个&便是取地址的意识,故在scanf('%s',&word);中&word是个地址,因此当后面的变量本身就是一个指针时,便不需要加&了,如例中:scanf('%s',stu[0][j]); 便没有加&。

4

注意:在数组中,字符串是不可以存储到一个变量中的,字符串始终是以数组的形式储存的,如以前提到过的char word[10]; scanf('%s',&word); //见《【C语言-02】向系统输入内容文字(字符串)》这个word其实就是一个数组。

5

因此像例中一样,要输出一个二维的带字符串的项目,必须定义3维数组,如图:

推荐信息