C语言中数组的初始化问题
一维数组
Int a[] = {1,2,3,4} //用数去填充
Int a[3] = {1,2,3} //指定大小
Int a[3] = {0} // 都是默认为0
如果不指定初值的话,编译器会给它指定一个初值,比如int型就是-858993460
二维数组
int a[][] = {{1,2,3,4},{5,6,7}} //用数去填充 2*4
Int a[2][4] = {{1,2,3,4},{5,6,7}}
Int a[2][4] = {0} //指定其默认值为0
如果不指定初值的话,编译器会给它指定一个初值,比如int型就是-858993460
代码:
#include <stdio.h>
void main(){
int a[3][3];
int i =0 ,j = 0 ;
for(i=0; i<3; i++){
for(j=0;j<3;j++){
printf("%3d",a[i][j]) ;
}
putchar('\n');
}
int x ;
printf("%d",x);
}
字符数组
Char str[] = {“yes”} ; //等同于 char str[] = “yes”
Char str[10] ;如果不给它赋初值,那么它会默认为“烫“
关于计算char数组的长度
#include<stdio.h>
#include<string.h>
void main(){
char str[9]="12345678"; //这里是“123456789“的话,就会发生数组越界,会报错。 printf("%d",strlen(str)); //输出的是8
}
其实,大小为9的char数组只能存8个字符,因为最后要留一个来填充‘\0’,即字符数组的结束标志。