C语言中字符串和字符数组的区别
C语言中字符串和字符数组的区别
- 1、基本概念
- 2、代码分析
- 3、总结
1、基本概念
字符串和字符数组很相似,但是有本质上的区别。
(1) C语言中,字符串是双引号括起来的单个或多个字符的集合,编译器自动在结尾加上’\0’字符。字符串常量存储在只读数据段,无法通过指针进行修改字符串中的某个字符。
(2)C语言中,不能定义字符串(没有string关键字,只要C++才有),但是在C语言中使用字符串,通常会用字符数组来模拟字符串,必须是’\0’结尾的字符数组,这个字符数组存储通常会分配在栈区,也可以被称为字符串,且该字符串中的字符是可以修改的。如果字符数组中没有’\0’结尾,那该字符数组就是普通的字符数组,不是字符串。
2、代码分析
#include <stdio.h>int main()
{//字符数组s和s0char s[] = "Hello World!";//可以成为字符串char s0[] = {'H', 'e', 'l', 'l', 'o'};//不可以成为字符串printf("%s\n", s);//printf(“%s\n”, s0); //编译报错printf("s[0] = %c\n", s[0]);char *p1 = s;*p1 = 'h';printf("Corrected:s[0] = %c\n", s[0]);printf("%s\n", s);//字符串常量本质是一个数组,可以做常量指针,代表该字符串的地址//字符串常量的本质是一个无名的字符数组//字符串常量的字符不可改变(存储于只读数据段)//字符串常量至少包含一个字符(即’\0’结束符)char ch1 = "Hello World!"[0];char ch2 = *""; // 等价于ch2 = ‘\0’,它的ASCII码值为0printf("ch1 = %s\n", ch1);printf("ch2 = %c\n", ch2);//指针变量p2指向存储在只读数据段的字符串常量char *p2 = "Hello World!";printf("%s\n", p2);printf("*p2 = %c\n", *p2);*p2 = 'h';printf("*p2 = %c\n", *p2);//运行时报错return 0;
}
运行结果:
3、总结
(1)C语言中,可以用字符数组模拟字符串。
(2)C语言中,字符串是以’\0’作结尾字符。
(3)C语言中,字符串常量本质上是一个无名的字符数组
C语言中字符串和字符数组的区别相关推荐
- C语言关于字符串和字符数组的题目(差别)
1.题目: 已有定义:char a[]="she",b[]={'s','h','e'};,以下叙述中正确的是( ) C A)数组a和b的长度相同 B)a数组长度小于 ...
- C语言中常用的字符数组函数
所有的字符数组处理函数都包括在 <string.h>这个头文件中 一.strlen 函数 原型:size_t strlen(char const* string); 在C语言中如何计算一个 ...
- C++语言篇 字符串及字符数组练习
01:统计数字字符个数 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字符串里面数字字符的个数. 样例输入 Peking Univers ...
- C语言——字符串和字符数组的区别及字符串的赋值
几点区别: 1.一维数组中不一定存放字符串,但字符串一定要存放在一维数组里. 2.字符数组的每一个元素可存放一个字符,但它并不限定最后一个字应该是什么. 3.不可以用赋值语句将字符串常量或其他字符串赋 ...
- C语言定义字符串和字符数组
#include<stdio.h> int main(){ char cArray[] = {'I', 'L', 'O', 'V','E', 'C'}; char sArray[] = & ...
- c语言中 快速输出字符数组后几位方法
#include<stdio.h>int main (){char s[] = "123253426" ;char *t = &s[2];printf(&quo ...
- (C/C++学习)15.C语言字符串和字符数组
说明:在C语言中字符串和字符数组有很多相似之处,却又有着一些不同.本文将针对其区别与联系,进行分析总结. 一.字符串 1.在C语言中,字符串是由双引号括起来的任意字符序列,如:"china& ...
- 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析
之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...
- c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题
代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...
最新文章
- 干货 | 统计学概论和医疗临床大数据分析(附PPT下载)
- 实现spring IOC的常见二种方法 setter注入与构造器注入
- 2021-01-05 Halcon初学者知识【7】 最简单的测距问题-点与点测距
- python文件处理:每隔一定数目删除;文件重命名;删除多余xml文件;将文件夹线所有文件平均分配到其他文件夹
- k8s dashboard_windows10 部署 docker+k8s 集群
- dz mysql导出shell_mysql数据备份并导入数据库shell脚本
- 【maven】Controller层参数如何设置传null
- SAKAI OAE汉化
- 底层逻辑 MATLAB 的句柄是什么
- DVWA教程(一) —— Low级别
- 王者服务器维护公告2月,2月26日全服不停机更新公告
- PMP工具与技术之人际关系与团队技能
- 【设计教程】在PS里面制作简单的下雨效果!
- python内置库求复数的辐角_皮肤与美容—医学专家如是说_中国大学MOOC(慕课)_章节测验答案...
- 2021年施工员-土建方向-岗位技能(施工员)免费试题及施工员-土建方向-岗位技能(施工员)考试总结
- 【java】poi word模板生成报告后打不开问题
- Cadence OrCAD快速查找元件和网络的方法
- 交互式甘特图控件VARCHART XGantt .NET ,如何从v5.1升级到v5.2?
- 纯原创最全Redis面试题整理
- React SSR路由支持实现
热门文章
- php计算用户留存,利用Python计算新增用户留存率
- Apache Flink之架构概述和环境(章节一)
- 语言模型 Probability Based: Language Model
- 审核和发送环节脱离?!看TOP级企业如何解决安全管理问题
- NCBI:Refseq
- html+css制作盾牌飞入效果
- 随时随地访问家里搭建的私有存储(tfcenter)
- YOLOv5的Tricks | 【Trick11】在线模型训练可视化工具wandb(Weights Biases)
- Failed to push the item
- 若两素数之差为2 ,则称两素数为双胞胎数,打印出[31,600]之间所有的双胞胎数,并求有多少对双胞胎数。