我是靠谱客的博主 感动棉花糖,最近开发中收集的这篇文章主要介绍c 语言往字符数组里面赋值,关于c 语言字符数组的赋值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先,在语法上,三句都是正确的,但按照C语言中字符串的用法,第二句是错误的,可能导致无法预料的错误结果。

在C语言中,我们一般说的字符串,其实就是字符数组(区别于C++,Java等语言),而用类似char a[]这样的方式,定义的就是一个字符数组,所以是正确的。

C语言中我们这么规定字符串:从字符数组下标0开始存储字符串,在字符串结束后,下一个位置用字符''作为结束标记,也就是说,数组长度应该是字符串长度+1。

下面解析一下这个程序:#include 

#include 

#include 

int main()

{

char a[] = "abc";   // 定义一个字符数组,字符串长度为3,实际数组长度为4

// a[]没写数字的情况下编译器根据后边的"abc"推断出,字符串长度为3,数组长度为4

// 所以等效于 char a[4] = "abc"

char b[3] = "xyz";    // 手动制定数组长度为3,内容为"xyz",所以结尾没有''

// 因为正好放得下"xyz",即使没有'',也没有错误或警告

// 但不符合C语言中字符串定义,可能导致错误!

char c[10] = "123456";    // 长度为10,只用了6+1=7个位置,稍浪费一些内存,但不会出错。

char d[3] = "ABCDEF";  // 长度真正超出范围,能编译,会有warning

printf("字符串a的长度是:%d, 内容是:%s n", strlen(a), a);

printf("字符串b的长度是:%d, 内容是:%s n", strlen(b), b);

printf("字符串c的长度是:%d, 内容是:%s n", strlen(c), c);

printf("字符串d的长度是:%d, 内容是:%s n", strlen(d), d);

return 0;

}

在我的运行环境下,a和c的结果正确,b的结果是"xyzabc",d的结果是"ABC123456",都是不可预料的结果。在其他编译器、运行环境下,a和c应当还是正确的,b和d结果可能有所不同。

总之,使用字符串时,需要按照C语言的规定来,才能有正确结果,否则即使能够通过编译,得到的结果也是不可预料的。所谓“自己亲手编程验证”,很可能有不完善的地方,不可作为正确与否的依据。

最后

以上就是感动棉花糖为你收集整理的c 语言往字符数组里面赋值,关于c 语言字符数组的赋值的全部内容,希望文章能够帮你解决c 语言往字符数组里面赋值,关于c 语言字符数组的赋值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部