a[0] =8;
a[1] =10;
元素值列表可以是数组所有元素的初值,也可以是前面部分元素的初值
inta[4] = {2,5}; 这样就赋值给a[0]=2;a[1]=5; a[2]=a[3]=默认值0
当定义并直接初始化时 可以不指定元素个数
int a[] = {2,3,5};
数组初始化时的赋值方式只能用于数组的定义,定义之后只能一个元素一个元素地赋值
inta[3];
a = {1,2,3};//错误。 因为 数组名a 代表变量的地址,是个常量,给常量赋值就错了
当数组作为实参时,因为传递的是一个地址,所以形参改变,实参也会改变
二维数组
定义形式:类型数组名[行数][列数]
inta[2][3];//共2行3列,6个元素, 即 两个包含三个元素的一维数组
在内存中的存储情况,例如int a[2][2]
(注意:a[0]、a[1]也是数组,是一维数组,而且a[0]、a[1]就是数组名,因此a[0]、a[1]就代表着这个一维数组的地址)
1>数组a的地址是ffc1,数组a[0]的地址也是ffc1,即a = a[0];
2>元素a[0][0]的地址是ffc1,所以数组a[0]的地址和元素a[0][0]的地址相同,即a[0] = &a[0][0];
3>最终可以得出结论:a = a[0] = &a[0][0],以此类推,可以得出a[1] = &a[1][0]
printf(“%p\n%p\n%p”, a, a[0], &a[0][0]);
二维数组的初始化
* 按行进行初始化
inta[2][3] = { {2,2,3}, {3,4,5} };
*按存储顺序进行初始化(先存放第1行,再存放第2行)
inta[2][3] = {2,2,3,3,4,5};
*对部分元素进行初始化
inta[2][3] = { {2}, {3,4} };
intb[3][3] = { { }, { , ,2}, {1,2,3}};
*如果只初始化了部分元素,可以省略行数,但是不可以省略列数
inta[][3] = {1,2,3,4,5,6};
inta[][3] = {{1,2,3}, {3,5}, {}};
为什么不能只省略列数呢? 因为int a[2][]={1,2,3,4,5,6} 这样无法确定元素在哪一行
字符串简介
*在Java中,一个字符串可以用String类型来存储
String s =”MJ”;
C语言中没有String这种类型。其实字符串就是字符序列,由多个字符组成,所以在C语言中,我们可以用字符数组来存储字符串。
*字符串可以看做是一个特殊的字符数组,为了跟普通的字符数组区分开来,应该在字符串的尾部添加了一个结束标志’\0’。
‘\0’是一个ASCII码值为0的字符,是一个空操作符,表示什么也不干。所以采用字符数组存放字符串,赋值时应包含结束标志’\0’。
*字符串”mj”的存储情况如下(假设用字符数组char a[]来存储):char a[] = {‘m’, ‘j’, ‘\0’};
注意了,尾部有个’\0’,如果没有这个结束标记,说明这个字符数组存储的并不是字符串
字符串的初始化
char a[3] = {‘m’, ‘j’, ‘\0’};
char b[3];
b[0] = ‘m’;
b[1] = ‘j’;
b[2] = ‘\0’;
char c[3] = “mj”;//“”初始化时,系统会自动在字符串尾部加上一个\0结束符
char d[] = “mj”;
char e[20] = “mj”;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-55787-3.html
当前必须完全抛售美国国债