static char c[]={'c',' ','p','r','o','g','r','a','m'}可写为:
static char c[]={"C program"}或去掉{}写为:
static char c[]="C program"
当对全体元素赋初值时也可以省去长度说明。例如:static char c[]={`c`,` `,`p`,`r`,`o`,`g`,`r`,`a`,`m`}这时C数组的长度自动定为9。
扩展资料:
数组的使用规则:
1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4}表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。
2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1}而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。
3.如不给可初始化的数组赋初值,则全部元素均为0值。
4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5}可写为:static int a[]={1,2,3,4,5}动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。
参考资料:
百度百科-数组
chardata[20]data="hello"
先解释这个为什么是错的,因为data="hello"实际上就是data[0]="hello"是data字符数组的首个字符,很显然不能放字符串。
至于两者的区别,后者可以可以更方便通过指针来访问修改删除元素。
char*data
data="hello"这句中的data是指针变量,指向"hello"这个字符串在内存中的首地址。
不是一个意思.比如:
int i//这是定义变量i, 类型为int, 现在并没有被初始化 , 未在内存中为其分配一块区域. 不能调用.
int i //定义
i=5//初始化, 赋与这个变量一个有意义的值
或
int i=5 //定义并初始化