c语言中,char怎么赋值

c语言中,char怎么赋值,第1张

1、char类型,也就是常说字符类型。char类型和其它类型一样在定义和初始化上可以先声明(定义),再赋值(初始化)。使用char来定义一个字符,通过单引号括起来的单个字符赋值给它。

2、当然你也可以在定义变量的时候就初始化(也就是在声明的时候赋值)。

3、注意字符并不意味着字母,单引号括起来的单个字符。所谓单个字符可以是数字、中文之类的。

4、字符类型可以自动转化为存储空间比它大的int类型。例如下面的例子,c是字符,把它赋值int类型的i1时,却不报错就是因为自动转化。

5、int转化为字类型时(这种是属于存储空间由大向小的转化),则需要强转。

6、加了强制转换这后,它就不报错了。

定义一个数组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。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7951849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存