黑马程序员技术交流社区
标题:
c语言 数组初始化
[打印本页]
作者:
愿我能
时间:
2014-4-26 19:15
标题:
c语言 数组初始化
int ages[5];
ages = {10, 11, 12, 14};
//是错误的写法
int ages[5];
ages = {10, 11, 12, 14};
//为什么是正确的,表示视频中老师好像没有具体讲,只说了下面也是错误的
int ages[count] = {10, 11, 12};
复制代码
作者:
m573555543
时间:
2014-4-26 19:25
数组可以用一个列值来初始化,例如
int v1[] ={1,2,3,4};
当数组定义时没有指定大小,当初始化采用列表初始化了,那么数组的大小由初始化时列表元素个数决定。所以v1为 int[4]类型。如果明确指定了数组大小,当在初始化时指定的元素个数超过这个大小就会产生错误。例如:
char v3[2] ={'a','b',0}; //错误:太多的初始化值了
char v3[3] ={'a','b',0}; //正确如果初始化时指定的的元素个数比数组大小少,剩下的元素都回被初始化为 0。例如
int v5[8]={1,2,3,4};
等价于
int v5[8]={1,2,3,4,0,0,0,0};
作者:
251638256
时间:
2014-4-26 19:45
三个都是错误的
第一个和第二个问题是数组只允许在定义的时候初始化列表
只能这样写
int ages[5] = {1,2,3,4,5};
第三个问题: 如果变量count是一个宏(#define定义)或const常量 且 count的值大于初始化列表参数的数量就不会出错
因为在C/C++中 定义一个数组必须显示地指定数组的元素数量.简单地说中括号中必须是个整数常量或宏
作者:
傘が咲く
时间:
2014-4-26 22:46
#include <stdio.h>
int main()
{
/*
//这样是错误的,应为a是数组的名字,数组名是当前数组的地址,是个常量,不能对其赋值。
int a[3];
a = {1,2,3};
*/
/*
int a[count];
//如果这样写,只能通过宏定义的方式对count进行宏定义,不允许数组元素的个数是个变量,
//因为数组是定长的数据结构。
*/
//下面是两种数组正确的赋值方式
int a[3] = {1,2,3};
int b[3];
b[0] = 1;
b[1] = 2;
b[2] = 3;
return 0;
}
复制代码
作者:
gaoxinglei123
时间:
2014-4-26 22:50
本帖最后由 gaoxinglei123 于 2014-4-27 20:39 编辑
数组就像结构体一样。声明时同时初始化,才能那样写。平时那样写是不允许的。数组在这种情况下声明时 是不能以变量为数组长度的。。只有在函数中才有可能用这种方式
作者:
jiangenhao
时间:
2014-4-26 22:52
顺便学习了 数组赋值我一直叫不准
作者:
2的狠正经
时间:
2014-4-26 23:44
数组的初始化 一般分四种
1,就i是 成员全部初始化:int a[3] =(1,2,3)
2,将缺省的成员置为 0: int a[10] = { 1, 2 };
3初始化全部成员为0: int a[10] = { 0 };
4 如果数组个数确定 可以这样写 int a[] ={1,2,3};
如果数组长度不想用数字表示, 可以使用宏定义
#define n 5 这样定义过就可以 实现 int a [n] ={1,2,3,4,5};
作者:
Er01c
时间:
2014-4-27 02:00
一维数组名是个指针常量(不允许赋值!),它存放的是一维数组第一个元素的地址
作者:
恣意
时间:
2014-4-27 13:11
1、你的1,2和4,5行有什么区别么?
2、数组元素个数必须是常量,即
类型说明符 数组名[常量表达式]。
所以,当count是常量时,7行才是正确的。
另外,数组名表示该数组的存储地址(指针)是个常量,不 能被赋值
3、数组初始化
可以只给一部分元素赋值,只赋给前面的元素,剩余的元素 值为0,
int ages[5]= {10, 11, 12, 14};
作者:
兰闻天
时间:
2014-4-27 13:25
//是错误的写法
int ages[5];
ages = {10, 11, 12, 14};//这个错误是因为,只有在定义数组的同时进行初始化;
int ages[count] = {10, 11, 12};//这个错误是因为定义数组的时候数组元素个数只能是常量,不能是变量;
//正确写法
1、int ages[5]= {10, 11, 12};//输出未定义的元素的值是0
2、int count = 3;
int ages[count];
ages[0]=20;
这样写是正确是因为你定义数组的时候没有进行初始化,可是这样输出的没有定义的元素的值是不确定的。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2