【转】给字符数组赋值的方法
【转】给字符数组赋值的方法2011-04-26 14:26main()
{
char s[30];
strcpy(s,"Good News~");/*给数组赋字符串*/
.
.
.
}
上面程序在编译时,遇到char s[30]这条语句时,编译程序会在内存的某处留 出连续30个字节的区域,并将第一个字节的地址赋给s。当遇到strcpy(strcpy为
Turbo )时,首先在目标文件的某处建立一个"Good News~[message]"的字符串。
其中[message]表示字符串终止,终止符是编译时自动加上的,然后一个字符一个字符地复
制到s所指的内存区域。因此定义字符串数组时,其元素个数至少应该比字符串的
长度多1。
注意:
"="直接赋值,即s="Good News~"是不合法的。所以应分 清字符串数组和字符串指针的不同赋值方法。
,Turbo :
例如:
main()
{
char s[100];
strcpy(s,"The writer would like to thank you for"
"your interest in his hopes you" "can get some helps from the book."); .
.
.
}
指针数组赋值
例如:
main()
{
char*f[2];
int*a[2];
f[0]="thank you";/*给字符型数组指针变量赋值*/ f[1]="Good Morning";
*a[0]=1,*a[1]=-11;/*给整型数数组指针变量赋值*/ .
.
.
}
--
补充:
无论是静态,局部还是全局数组只有在定义时才能初始话,否则必须通过其它方
法,比如循环操作实现。
任何
int a[3];
static int b[3];
a[3]={1,2,3};
b[3]={1,2,3};
没有在定义时初始化都是错误的~ ---
以下是转载:
学了这么多年的C语言,突然发现连字符串赋值都出错,真的很伤心。
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出现混乱,不允许~
还有:不能使用关系运算
转给字符数组赋值方法 来自淘豆网m.daumloan.com转载请标明出处.