
正文
c语言字符数组初值是什么,c语言字符数组的初始化
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言字符数组初始化
C语言允许用字符串的方式对数组作初始化赋值。例如:static char c[]={c, ,p,r,o,g,r,a,m}; 可写为:static char c[]={C program}; 或去掉{}写为:static char c[]=C program;当对全体元素赋初值时也可以省去长度说明。
这二种初始化方式的区别在于第一种方法是存储了5个字节的内容,即能看到的个字母,外加一个字符串结束符\0。这样才能正确地以%s的形式来输出这个字符串;而第二种方法则是只存储了4个字母,但是却没有字符串结束符,所以它不能以%s的形式正确输出。
左图的程序是a和b初始化时都被赋值为字符串,它们的最后都有字符\0,有了这个标志,求字符串长度和输出字符串时都能得到正确的结果。右图的程序a的初始化赋值仍然是字符串,所以它的输出也是正确的。而b的初始化使b成为一个“字符数组”,它的最后没有字符串结束符,系统也不会主动加上。
相关问答
Q1: C语言初始化字符型数组时,两种方式的区别?
左图的程序是a和b初始化时都被赋值为字符串,它们的最后都有字符\0,有了这个标志,求字符串长度和输出字符串时都能得到正确的结果。右图的程序a的初始化赋值仍然是字符串,所以它的输出也是正确的。而b的初始化使b成为一个“字符数组”,它的最后没有字符串结束符,系统也不会主动加上。
这二种初始化方式的区别在于第一种方法是存储了5个字节的内容,即能看到的个字母,外加一个字符串结束符\0。这样才能正确地以%s的形式来输出这个字符串;而第二种方法则是只存储了4个字母,但是却没有字符串结束符,所以它不能以%s的形式正确输出。
用字符串常量来初始化字符数组:在c语言中,将字符串作为字符数组来处理。因此可以使用字符串来初始化字符数组。1 char str[]={I am happy};也可以省略花括号。
字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。
看下这个就明白了 至于b等于多少完全是不确定的。
Q2: C语言中怎么给数组赋初值
1、给数组赋初值的方法:直接初始化:int arr[3]={1,2,3};遍历访问初始化:for(i = 0;i 3;i++) arr[i]=i;内存操作函数:memset(arr,3,abs);//abs为另一个已知的数组。字符串赋值函数,仅限于char型数组:strcpy(arr,abs) ;abs为一字符串或者char型数组。
2、(2)数值数组如果只定义不初始化,编译器不为数组自动指定初始值,即初值为一些随机值(值不确定)。如果全部元素均指定初值,定义中可省略元素的个数。
3、C语言对数组的初始化赋值还有以下几点规定:1) 可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只 给前面部分元素赋值。例如:int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。2) 只能给元素逐个赋值,不能给数组整体赋值。
4、初始化时进行赋值。int a[2] = {1,2};char str[20] = hello world;逐个赋值 int a[4];a[0] = 1,a[1]=2, a[2] = 3, a[4]=4;等同于。
5、给数组赋值eof怎么用?eof 是个宏,其意思是:end of file,文件尾标志。从数值上来看,就是整数-1 在c语言的头文件中对其进行了宏定义:libio.h:#defineeof(-1)当读文件操作时,遇到文件结束位置或读数据出错均会返回 eof。
Q3: C语言字符数组不赋初值是默认为\0还是随机值
1、没有赋值的就是随机值,系统不会对它们填默认值。
2、这个取决于编译器,对于大多数编译器,如果在main函数上面定义的话,是默认\0的,如果是main里面定义,那么会是随机的字符~所以说写程序一定要弄好初值问题,一般都要赋上初值。
3、,未初始化,其值有两种可能:一种是全局数组,被编译器初始化为0。一种是局部数组,为随机数。2, 已初始化,局部数组和全局数组,已初始化,未赋值的数组都会被赋值为0。
4、不是0,是一个特定值,但是具体是多少不知道。不是null,C中NULL基本和0等价。
5、return 0;} 输出结果为:k = 0, m = 0, n = 0;解释:k和m的值为什么是0就不做解释了。
Q4: C语言字符数组如何初始化?
C语言允许用字符串的方式对数组作初始化赋值。例如:staticcharc[]={c,p,r,o,g,r,a,m};可写为:staticcharc[]={Cprogram};或去掉{}写为:staticcharc[]=Cprogram;当对全体元素赋初值时也可以省去长度说明。
这二种初始化方式的区别在于第一种方法是存储了5个字节的内容,即能看到的个字母,外加一个字符串结束符\0。这样才能正确地以%s的形式来输出这个字符串;而第二种方法则是只存储了4个字母,但是却没有字符串结束符,所以它不能以%s的形式正确输出。
如果是定义的全局,变量字符数组可以不用初始化因为全局变量会自动初始化为0值。如果是局部变量可以在定义的时候就给他初始化,也可以在定义完成以后,再用一个循环对他的所有元素进行初始化。
而b的初始化使b成为一个“字符数组”,它的最后没有字符串结束符,系统也不会主动加上。所以,当后面你用字符串操作函数strlen和字符串格式符%s输出b时,系统会一直往后找,直到找到一个\0时,系统便认为,这就是字符串结束的地方,故,输出的字符串长度和字符串本身都是错误的。
c语言字符数组初值是什么的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言字符数组的初始化、c语言字符数组初值是什么的信息别忘了在本站进行查找喔。






