数组赋值(C语言怎么给数组赋值)
大家好,今天小编来为大家解答以下的问题,关于数组赋值,C语言怎么给数组赋值这个很多人还不知道,现在让我们一起来看看吧!
数组的赋值方法
初始化赋值的一般形式为:static类型说明符数组名[常量表达式]={值,值……值};其中static表示是静态存储类型, C语言规定只有静态存储数组和外部存储数组才可作初始化赋值(有关静态存储,外部存储的概念在第五章中介绍)。
在{}中的各数据值即为各元素的初值,各值之间用逗号间隔。例如:static int a[10]={ 0,1,2,3,4,5,6,7,8,9};相当于a[0]=0;a[1]=1...a[9]=9;
char[]数组该如何赋值
定义一个数组char a[10];
怎么给这个数组赋值呢?
1、定义的时候直接用字符串赋值
char a[10]="hello";
注意:不能先定义再给它赋值,如char a[10]; a[10]="hello";这样是错误的!
2、对数组中字符逐个赋值
char a[10]={'h','e','l','l','o'};
3、利用strcpy
char a[10]; strcpy(a,"hello");
易错情况:
1、char a[10]; a[10]="hello";//一个字符怎么能容纳一个字符串?况且a[10]也是不存在的!
2、char a[10]; a="hello";//这种情况容易出现,a虽然是指针,但是它已经指向在堆栈中分配的10个字符空间,现在这个情况a又指向数据区中的hello常量,这里的指针a出现混乱,不允许!
main()
{
char s[30];
strcpy(s,"Good News!");/*给数组赋字符串*/.
}
上面程序在编译时,遇到char s[30]这条语句时,编译程序会在内存的某处留出连续30个字节的区域,并将第一个字节的地址赋给s。当遇到strcpy( strcpy为Turbo C2.0的函数)时,首先在目标文件的某处建立一个"Good News!/0"的字符串。其中/0表示字符串终止,终止符是编译时自动加上的,然后一个字符一个字符地复制到s所指的内存区域。因此定义字符串数组时,其元素个数至少应该比字符串的长度多1。
数组和指针的赋值
A正确
char*s表示s是一个指针,s=“olympic”表示s指向该字符串的首地址。
B错误在于s是一个数组只能在初始化时被定义,之后就不能作为左值被整体赋值,但是可以对他的单个元素进行操作,而且数组s的空间太小也容不下这个字符串,因为"Olympic"实际上是"Olympic'\0'",所以要定义八个就字节的空间。
正确定义:char*s[8]={"Olympic"};或char*s[8]="Olympic";
C没有大括号。
D的错误如B。
好了,关于数组赋值和C语言怎么给数组赋值的问题到这里结束啦,希望可以解决您的问题哈!