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语言中字符串和字符数组的区别相关推荐

  1. C语言关于字符串和字符数组的题目(差别)

    1.题目: 已有定义:char a[]="she",b[]={'s','h','e'};,以下叙述中正确的是(  )   C A)数组a和b的长度相同      B)a数组长度小于 ...

  2. C语言中常用的字符数组函数

    所有的字符数组处理函数都包括在 <string.h>这个头文件中 一.strlen 函数 原型:size_t strlen(char const* string); 在C语言中如何计算一个 ...

  3. C++语言篇 字符串及字符数组练习

    01:统计数字字符个数 描述 输入一行字符,统计出其中数字字符的个数. 输入 一行字符串,总长度不超过255. 输出 输出为1行,输出字符串里面数字字符的个数. 样例输入 Peking Univers ...

  4. C语言——字符串和字符数组的区别及字符串的赋值

    几点区别: 1.一维数组中不一定存放字符串,但字符串一定要存放在一维数组里. 2.字符数组的每一个元素可存放一个字符,但它并不限定最后一个字应该是什么. 3.不可以用赋值语句将字符串常量或其他字符串赋 ...

  5. C语言定义字符串和字符数组

    #include<stdio.h> int main(){ char cArray[] = {'I', 'L', 'O', 'V','E', 'C'}; char sArray[] = & ...

  6. c语言中 快速输出字符数组后几位方法

    #include<stdio.h>int main (){char s[] = "123253426" ;char *t = &s[2];printf(&quo ...

  7. (C/C++学习)15.C语言字符串和字符数组

    说明:在C语言中字符串和字符数组有很多相似之处,却又有着一些不同.本文将针对其区别与联系,进行分析总结. 一.字符串 1.在C语言中,字符串是由双引号括起来的任意字符序列,如:"china& ...

  8. 【C语言进阶深度学习记录】二十六 C语言中的字符串与字符数组的详细分析

    之前有一篇文章是学习了字符和字符串的,可以与之结合学习:[C语言进阶深度学习记录]十二 C语言中的:字符和字符串 文章目录 1 字符串的概念 1.1 字符串与字符数组 1.2 字符数组与字符串代码分析 ...

  9. c语言中字符串数组的地址存放以及%s输出单个字符导致程序崩溃的问题

    代码 总结下c语言中字符串数组的地址存放问题 #include <iostream> using namespace std; #include<bits/stdc++.h>i ...

最新文章

  1. 干货 | 统计学概论和医疗临床大数据分析(附PPT下载)
  2. 实现spring IOC的常见二种方法 setter注入与构造器注入
  3. 2021-01-05 Halcon初学者知识【7】 最简单的测距问题-点与点测距
  4. python文件处理:每隔一定数目删除;文件重命名;删除多余xml文件;将文件夹线所有文件平均分配到其他文件夹
  5. k8s dashboard_windows10 部署 docker+k8s 集群
  6. dz mysql导出shell_mysql数据备份并导入数据库shell脚本
  7. 【maven】Controller层参数如何设置传null
  8. SAKAI OAE汉化
  9. 底层逻辑 MATLAB 的句柄是什么
  10. DVWA教程(一) —— Low级别
  11. 王者服务器维护公告2月,2月26日全服不停机更新公告
  12. PMP工具与技术之人际关系与团队技能
  13. 【设计教程】在PS里面制作简单的下雨效果!
  14. python内置库求复数的辐角_皮肤与美容—医学专家如是说_中国大学MOOC(慕课)_章节测验答案...
  15. 2021年施工员-土建方向-岗位技能(施工员)免费试题及施工员-土建方向-岗位技能(施工员)考试总结
  16. 【java】poi word模板生成报告后打不开问题
  17. Cadence OrCAD快速查找元件和网络的方法
  18. 交互式甘特图控件VARCHART XGantt .NET ,如何从v5.1升级到v5.2?
  19. 纯原创最全Redis面试题整理
  20. React SSR路由支持实现

热门文章

  1. php计算用户留存,利用Python计算新增用户留存率
  2. Apache Flink之架构概述和环境(章节一)
  3. 语言模型 Probability Based: Language Model
  4. 审核和发送环节脱离?!看TOP级企业如何解决安全管理问题
  5. NCBI:Refseq
  6. html+css制作盾牌飞入效果
  7. 随时随地访问家里搭建的私有存储(tfcenter)
  8. YOLOv5的Tricks | 【Trick11】在线模型训练可视化工具wandb(Weights Biases)
  9. Failed to push the item
  10. 若两素数之差为2 ,则称两素数为双胞胎数,打印出[31,600]之间所有的双胞胎数,并求有多少对双胞胎数。