首页 > 编程知识 正文

c语言字符串赋值规则,c语言字符串赋值

时间:2023-05-05 05:50:29 阅读:21195 作者:4983

首先,在c语言中,在c、Java、python等面向对象语言中没有像string这样的字符串类型,c语言的字符串存储在字符类型数组中

在c语言中,常见的三个字符串赋值如下:

1、用字符数组直接初始化

int main () {char str[10]='China '; char str[10]; str[10]='China '; printf(str=%s )、str ); 返回0; } 但是,直接把数组元素赋值给数组名(也就是数组首元素的地址),是不行的

int main () charstr ) ) 10; str='China '; printf(str=%s )、str ); 返回0; }这样会发生编译错误。 C2106 (运算符的左操作数必须为左值) ) ) ) )。

2、使用strcpy函数初始化

int main () charstr1(10 ),str2)='China ); strcpy(str1、str2; //此行的代码也可以写为strcpy(str1,' China ' )。 printf(str1=%s )、str1); 返回0; }注意,使用strcpy函数strcpy(str1、str2),字符数组1必须定义为足够大以容纳复制的字符串2,并避免数组越界。

以下写法是错误的

char str1[10],str2='China '; str1=str2;注:

在c语言中,如果将一个字符串赋值给另一个字符串,则只能使用strcpy函数

但是,可以使用赋值号实现对单个字符的赋值

例如:

char str1[10]; str1[0]='A '; str1[1]='B '; str1[2]=' '; 这里必须注意的是,结束后一定要自行添加 ‘’

否则,就会出现“AB烫发”“d结核”的编译结果

3、用指针赋值

因为用指针分配字符串比较难理解,所以先看看代码吧

# define _ CRT _ secure _ no _ warnings//可以在VS2019中添加。 否则,就会出现C4996的问题。 # include stdio.hint main ({ char * string=' I love ) } printf(string=%s )、string ); 返回0; }如何理解此代码:

程序定义了char *型指针变量(字符指针变量) string。 c语言中指针=地址,正如名字所示,指针变量中保存有地址

字符串常数' I Love China ',c语言将字符串常数作为字符数组处理。

组合以上两点可知,该字符指针保存了字符常数的第一个元素的地址

因此,在输出时,只要向编译器告知字符常数开头要素的地址即可

char* string='I Love China '; 也可以写如下。

char *字符串; string='I Love China '; *string='I Love China ';不可以写为:

*string=“I Love China”

这是因为字符串常量在c语言中按字符数组存储,而string存储地址

另外,我们在谈论字符串的输出;

char str[10]='China '; printf(str=%s )、str ); 整数数组的输出需要for循环

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。