c 语言往字符数组里面赋值,关于c 语言字符数组的赋值
首先,在语法上,三句都是正确的,但按照C语言中字符串的用法,第二句是错误的,可能导致无法预料的错误结果。
在C语言中,我们一般说的字符串,其实就是字符数组(区别于C++,Java等语言),而用类似char a[]这样的方式,定义的就是一个字符数组,所以是正确的。
C语言中我们这么规定字符串:从字符数组下标0开始存储字符串,在字符串结束后,下一个位置用字符'\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",所以结尾没有'\0'
// 因为正好放得下"xyz",即使没有'\0',也没有错误或警告
// 但不符合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 语言字符数组的赋值相关推荐
- android 数组赋值字符串_c语言中的字符数组与字符串
1.字符数组的定义与初始化 字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素. char str[10]={ 'I',' ','a','m',' ','h','a','p','p','y ...
- c语言字符数组赋值超过,C语言字符数组赋值
C语言字符数组赋值教程 C语言字符数组赋值详解 语法 arr[index] = value; 参数 参数 描述 arr 数组名. index 需要赋值的下标索引. value 需要设置的值. 说明 给 ...
- C语言 —— 把字符指针中的字符串,存入字符数组中
问题描述:有一个用字符指针表示的字符串char *str = "0 12"; 有一个数组 char buf[128] = {0}; 现在需要将字符指针表示的字符串"0 ...
- c语言字符初始化怎么表示,C语言初始化字符串 怎么进行字符串赋值?C语言
C语言数组字符串初始化问题 C语言中,初始化操作就是在定义变量的时候,对变量进行赋值,即称为变量的初始化.对于字符变量也是一样的. 举例如下: char ch='a'; // 定义一个字符变量,变量名 ...
- C语言:字符串API拷贝_strcpy(),strncpy,给(数组名)赋值字符串要用strcpy
1.字符串的拷贝API:strcpy() 不能给数组名赋值字符串的情况,要用strcpy,具体的请看下面 因为数组名是常量,不能直接赋值字符串 数组名是常量-详解,点击跳转 字符串常量: 1.与字符数 ...
- c 语言定义2维字符串数组赋值,二维数组赋值字符串 c 语言 二维字符串数组赋值问题...
C语言中二维字符数组应该怎样赋值? c语言二维数组如何定义字符串????急... 二维字符数组的定义格式为:char 数组名[第一维大小][第二维大小]; 例如:char c[3][10]; //定义 ...
- 国2c语言中指针与数组的赋值运算,C语言到汇编-指针与数组2
本章剩下的内容主要有: 1.指针与数组 & 地址算术运算 2.字符指针与函数 3.多维数组 & 指针与多维数组 4.指向函数的指针 每个内容举一个例子,第一个例子: int a[10] ...
- strcmp可以比较数组么_6.3 C语言字符数组
01字符数组的定义 1.用来存放字符数据的数组是字符数组.字符数组中的一个元素存放一个字符. 2.定义字符数组的方法和定义数值型数组的方法类似. 例子: char c[10]; 02 字符数组的初始化 ...
- C语言程序设计 | 指针的进阶(一):字符指针、数组指针、指针数组、函数指针
指针的进阶(一)目录: 字符指针 数组指针和指针数组 函数指针 字符指针 在开始讲解这一章节之前,我们需要了解指针前面声明的类型的意义 类型 * 指针名 对于指针来说,我们在给指针进行声明时,我们声明 ...
最新文章
- 查表法生成流水号的示例.sql
- mockito mock void方法_用过举手!SpringBoot 单元测试利器Mockito
- EC20模组使用MQTT库对接EMQX,基于STM32F407
- 【Python基础入门系列】第05天:Python函数
- 8086指令系统 操作数地址,双操作数,单操作数,无操作数指令。一,传送类指令;二,二、算数运算类指令
- 爬取校园网新闻首页的新闻 使用正则表达式,函数抽离
- 命令行cmd跳转到其他地址
- 37. 使用accumulate或者for_each进行区间统计
- Qt Toast 一个淡出提示效果
- 测试于仕琪 libfacedetection人脸检测
- 分布式——分布式面试题
- IIC,SPI,I2S
- python假设检验和区间估计_用 Python 实现常用的假设检验
- 安装mysql忘了初始密码咋办_mysql安装忘记初始密码怎么办
- 电信联通提高手机补贴
- 微信小程序中如何将数据保存到内存中并且读取的同步写法
- unity 实现闪电特效
- [高频面试题]64匹马,8个赛道,找出跑得最快的4匹马
- Js做的城市三级联动,原创
- 【速览】2022年中国光伏逆变器行业市场现状及企业格局分析:行业需求增加,发展迅速[图]