字符数组的初始化与赋值
代码编译运行环境:VS2017+Win32+Debug
1.字符数组的初始化方式
C语言中表示字符串有两种方式,数组和指针,字符数组是我们经常使用的方式。变量的定义包括指明变量所属类型、变量名称、分配空间以及初始化。可以看出,变量的初始化是变量定义的一部分。除了const变量需要显示初始化以外,其它变量如果在定义时未显示初始化,编译器会为变量以默认值进行初始化。变量的赋值和初始化有着本质的区别,字符数组也是如此,具体见我的另一篇博客:认识初始化。
1.1逐个字符初始化
当定义一个字符数组时,可以采用逐个字符初始化的方式:
char str[10]={ 'h','e','l','l','o'};
当显示指定的字符不足字符数组的长度时,编译器将剩余字符置为空字符’\0’。
1.2字符串常量来初始化字符数组
在C语言中,将字符串作为字符数组来处理,因此可以使用字符串来初始化字符数组。
char str[]={"hello"};
也可以省略花括号。
char str[10]="hello";
不及字符数组长度时,剩余字符置为空字符’\0’。因此,我们不难得出,当为一个字符数组初始化为空字符数组的做法有如下几种:
char test1[256]="";
char test2[256]={""};
char test3[256]={0};
char test3[256]={'\0'};
2.字符数组的赋值
当为已经完成定义的字符数组赋值时,不能采用类似于初始化的方式为字符数组赋值了。如下语句是错误的:
char str[10]; //已经完成定义(包括编译器默认的初始化)
str={'a','d','s'}; //错误
str="abc"; //错误
str={0}; //错误
错误的原因是字符数组名代表字符数组的收地址,不可修改,不能作为左值。左值的概念见博客:认识左值与常引用。
2.1逐个字符赋值
(1)for循环的方式。
char str[10];
for(int i=0;i<sizeof(str):++i)str[i]='\0';
(2)使用memset()赋值,较for循环高效率,建议使用。当然为字符数组置空应该在初始化时完成,不应该再多次一举。
char str[10];
memset(str,0,sizeof(str));
2.2拷贝赋值
利用已有的字符串,通过memcpy,strcpy或者strncpy等函数实现拷贝赋值,参考代码如下:
char str[10];
char str2[]="hello";
memcpy(str,str2,sizeof(str2));
strcpy(str,str2);
strncpy(str,str2,strlen(str2)+1);
参考文献
[1]C语言字符数组如何初始化?
字符数组的初始化与赋值相关推荐
- C语言中字符数组的初始化与赋值,字符串相关函数
C语言中字符数组的初始化与赋值,字符串相关函数! 1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. (1)直接逐个初始化字符数组 ...
- C语言中字符数组的初始化与赋值
1.字符数组初始化 在C语言中,字符串是当做字符数组来处理的:所以字符串有两种声明方式,一种是字符数组,一种是字符指针. 字符数组初始化 char parr[] = "zifuchuansh ...
- C语言中字符数组的初始化与注意事项
在C语言中字符数组的初始化有三种常见的方法: char a[5] = {'a','b','c','d','e'};char c[] = {'a','b','c','d','e'};char b[] = ...
- C语言字符数组的初始化
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...
- java语言中类定义数组赋值_在Java语言中,下列对于字符数组的定义并赋值正确的是(选一项)_学小易找答案...
[单选题]<茶花女--饮酒歌>这段音乐属于级进还是跳进的旋律? <茶花女-饮酒歌>.mp4 [简答题] [单选题]对外汉语教学中以系统讲授语言知识的一类课型,包括语音.词汇.语 ...
- 关于字符数组的初始化
字符数组可以在定义时进行初始化.有两种初始化方法. 方法1:逐个字符赋给数组中各元素.这种方法最容易理解.例如: char c[5]={ 'H','a','p','p','y' }; 把5个字符分别赋 ...
- 字符数组的初始化及字符串的使用
文章目录 字符数组的定义 字符数组初始化 字符串存放 '\0'的作用 字符数组的定义 同整型数组一样: 一维数组定义:char c[10]; 二维数组定义:char ch[3][4]; 字符数组初始化 ...
- 字符串,字符数组的初始化
先上代码: #include<stdio.h>int main() {char* s1 = (char *)"aaaaa";// char * s2={'b','b', ...
- C语言之字符数组在if{}里面赋值给char *引发的问题
1 问题 我的buff在if{}里面,然后对buff进行内存操作,最后赋值给char *类型的url,发现url最后没有得到数据 如下代码 #include <stdio.h> #defi ...
最新文章
- 【小知识】C、C++ 中const的实现机制
- 写出C语言中5种数据类型的名称及其关键字,求C语言中的32个关键字及其意思?...
- t30智能插座怎么设置_如何设置ConnectSense智能插座
- 计算机网络之网络层:10、IP组播、IGMP协议、组播路由选择协议
- 浏览器对象模型(BOM)
- 数据结构及算法之快速排序-python实现
- Dubbo 服务 IP 注册错误踩坑经历
- 快播(Qvod)也开始耍流氓了
- rs485数据线接反_rs485接口怎么接线?弱电人必学RS485接口基础知识讲解
- html5 调用摄像头 支持IE,ie调用不了摄像头 为什么电脑IE浏览器无法启动摄像头...
- 【CVPR2020】计算机视觉与模式识别会议论文完全清单_Part1
- windows server 2003忘记密码
- scrapy+python爬地图参照物应该有的坑及解决办法
- html在搜索栏中加入放大镜,CSS3 搜索条动画(放大镜图标展开为长方形输入框)...
- verilog驱动1602液晶屏
- Photoshop精讲精练笔记
- JavaScript每日一题 20170207
- ADsAD合辑(二)AD具体使用
- 解决mac idea2020打开闪退问题
- Python练手----字符串的密钥加密