您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
026第六章 数组04 不完全定义的二维数组与宏的应用
发布时间:2021-04-24 10:28:01编辑:雪饮阅读()
不完全的二维数组
不完全二维数组的定义在c语言中有如:

这里可以看见这里,定义了一个外层3个元素,内层4个元素的二维数组,内层中每个括号只有一个值,则会默认填充到每个内层4个元素的第一个索引位置上。
使用宏来实现注释
如果在上面的数组定义的右值中,我们内层每个花括号都不要,则该定义中这3个数会被认为是二维数组中第一个二维数组所在的元素里面的成员,虽然二维数组中的这第一个二维数组成员总共4个元素,但是不够的一个就用0填充。
同时这里可以使用宏来代替注释将上面那个二维数组给定义掉,比如#if(0)由于0被视为假,所以用#if(0)的宏将上面这个二维数组的定义包括,则可以使得该定义永远不会生效。
如:
#include <stdio.h>
void main(){
#if(0)
int a[3][4]={{1},{5},{9}};
#endif
int a[3][4]={1,5,9};
for (int i = 0; i < 3; i++)
{
printf("a[%d]:",i);
for (int x = 0; x < 4; x++)
{
if(x==3){
printf("%d",a[i][x]);
}
else{
printf("%d,",a[i][x]);
}
}
printf("\n");
}
}
D:\cproject>gcc main.c -o m
D:\cproject>m.exe
a[0]:1,5,9,0
a[1]:0,0,0,0
a[2]:0,0,0,0
那么上面这个定义中右值中每个成员都没有花括号了,并且只有3个值,那么就会被填充到二维数组的第一二维数组的成员,那么这里如果多加两个值,则第一个二维数组的成员就存放不下了,它就会自动把多余的再挤向第二个二维数组的成员索引去填充,依此类推。如:
#include <stdio.h>
void main(){
#if(0)
int a[3][4]={{1},{5},{9}};
#endif
int a[3][4]={1,5,9,4,7};
for (int i = 0; i < 3; i++)
{
printf("a[%d]:",i);
for (int x = 0; x < 4; x++)
{
if(x==3){
printf("%d",a[i][x]);
}
else{
printf("%d,",a[i][x]);
}
}
printf("\n");
}
}
D:\cproject>m.exe
a[0]:1,5,9,4
a[1]:7,0,0,0
a[2]:0,0,0,0
如果数量过多,所有二维数组成员索引数都不够存放的时候应该是会报错的。
关键字词:c语言,二维数组,宏
下一篇:027第六章 数组05 平均数