目录

在学习c语言的过程中,字符是一个特殊的类型,它可被变量接收,可以组合成串被数组接收,被指针接收,在学习中时长会造成问题,下面是对于字符问题的一些整理,还有许多地方没有做到位日后补充。

1.字符

2.字符串

3.字符指针

4.总结


在学习c语言的过程中,字符是一个特殊的类型,它可被变量接收,可以组合成串被数组接收,被指针接收,在学习中时长会造成问题,下面是对于字符问题的一些整理,还有许多地方没有做到位日后补充。

1.字符

如下:

 char ch1 = 'a';

其中,'a'表示一个字符,在赋值给一个char类型变量时使用单引号

sizeof运算符

语法:sizeof(类型名/变量名)

代表存储属于类型名/变量名的值所需要的字节数,只关注所占空间大小

char类型的大小

ch1变量的大小

字符的输出

printf("%c\n",ch1);

%c用来表示字符的输出

ASCII码表

当今最常见的字符集,在VS编译器中使用。

字符在编译器中用ASCII码中的对应整数来表示

2.字符串

用一对双引号括起来的字符序列

如下:

char ch2[] = "abcd";

在c语言中,字符串作为数组来处理。

其中,‘abcd’表示一个字符串,在赋值给一个char类型数组时使用双引号

上述代码相当于,字符串在数组中存储:

char ch2[5] = { 'a','b','c','d','\0' };
  • 字符串变量的声明中可以省去它的长度,编译器会自动计算长度

ch2数组的大小

输出为5,此时ch2所占空间为5个字节

分别为:

字符串的输出

printf("%s\n",ch2);

%s用来表示字符串的输出

字符赋值给数组:

char ch2[5] = { 'a','b','c','d' };printf("%s\n",ch2);

给出数组大小为5时,ch2[4]的位置为空,编译器会自动填充字符'\0'终止打印

若不给出多余空间存储终止字符'\0'

char ch2[] = { 'a','b','c','d' };
printf("%s\n",ch2);

打印出为字符串及一串乱码

因为没有终止字符,打印时会沿着内存一直打印,直到遇到\0

字符串使用字符变量存储

char ch2[] = "abcd";

  • 字符变量ch的空间大小为1,表示字符变量的大小是固定的无法改变(其它类型变量相同)
  • 此时如果打印的是字符串,系统会直接跳过,无法输出,一个字符变量空间无法容纳字符串
  • 此时打印的为字符,如图所示,输出为一个随机字符

3.字符指针

如下:

char* ch3 = "abcde";
char* ch4 = 'a';

指针变量大小及输出

#include<stdio.h>​int main(){char* ch3 = "abcde";char* ch4 = 'a';char* ch5[] = {'a','b','c','d'};  //错误写法,指针数组只能接收首元素​printf("%d\n", sizeof(ch3));printf("%d\n", sizeof(ch4));printf("%d\n", sizeof(char*));​printf("%s\n", ch3);printf("%c\n", ch4);printf("%s\n", ch5);​return 0;}

指针变量空间大小

所打印指针变量空间大小,为指针类型的大小,所有类型指针变量相同

所有指针变量的大小都是存储地址的大小,地址需要多大空间,指针变量就有多大空间

32位机器上,一个地址是需要32个二进制位,存放一个地址,需要32个bit位,指针大小是4个字节

64位机器上,一个地址是64个二进制位,存放一个地址,需要64个bit位,指针的大小位8个字节

指针变量的打印

字符串赋给指针变量后,指针指向的为字符串首元素的地址,此时,指针可以作为字符串数组使用。

当使用指针数组接收字符串时,指针接收的也是首元素地址,所以输出为首元素。

但是:

字符串赋值后,指针变量不可以在被修改

4.总结

  1. 字符由字符变量,字符指针接收

  2. 字符串由字符数组接收,由字符指针变量接收

一.字符 字符串 指针字符相关推荐

  1. HTML怎么统计字符,字符串中字符统计.html

    Document var str = prompt("请输入一段字符"); console.log(str); function calculate(str) { // 将字符串转 ...

  2. 字符串,字符指针,字符串指针,字符数组

    对于指针可能是大多数程序员最痛苦的事,尤其是指针和字符串和数组三者放在一起的时候,经历了几次错误后,我打算总结一下这几者的区别. 字符串:"asdasfsff",c语言中后面有'\0'. 字符数组:A ...

  3. 「MacOS」Swift 第三章:字符串和字符

    3 字符串和字符 字符串和字符分别使用 String 类和 Character 类表示,字符串是一系列字符的集合. 字符串之间的拼接使用+号完成:也可向可变字符串中插入常量.变量.字面量,这一过程称为 ...

  4. python100day - 07day-集合、字符串和字符

    python100day - 07day-集合.字符串和字符 集合 1.什么是集合(set): 1)集合是容器型类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3, -} ...

  5. C语言中字符数组和字符串指针分析

    写下面的测试程序: #include <stdio.h> int main(int argc, char *argv[]) { char day[15] = "abcdefghi ...

  6. 第十节 字符串指针变量与字符数组的区别(十一)

    用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1) 字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一 ...

  7. c 将数字数组转成字符串_C+|用指针指向字符串字面量、字符数组及字符指针数组...

    指针可以指向一个字符串字面量,可以指向一个字符数组,可以指向一块动态分配的内存单元: char *s1, *s2, *s3 = "abcde"; char ch[] = " ...

  8. Delphi 的字符及字符串[4] - 字符串、字符指针与字符数组

    //字符串 < > 字符数组 vararr: array[0..5] of Char;str: string; begin{可以把字符串常量直接赋给字符数组; 但超界不行}arr := ' ...

  9. C语言 多重指针--整型字符字符串 int**pp

    介绍 多重指针:一个指针指向另一个指针 离值越近的指针级别越大:一级 内存布局 代码 图示: 多重指针–整型 #include<stdio.h> #include<string.h& ...

最新文章

  1. jquery和css3打造超梦幻的三维动画背景
  2. webpack 搭建rect项目
  3. 【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账号添加 | 源码资源 )
  4. LeetCode周总结--第一周
  5. 验证码画布生成以及点击图片切换验证码
  6. 【JUC系列】Future异步回调模式
  7. 开源,免费,跨平台——白鹭引擎(Egret Engine)
  8. matlab中 mcc/mbuild/mex 区别
  9. 千峰python资料下载_千锋Python基础视频教程全集下载
  10. IP协议和IPX协议的区别
  11. 【机器学习】21个机器学习面试问答
  12. android截图保存在哪,电脑f12截屏一般保存在什么位置 | 手游网游页游攻略大全...
  13. adb 连接方式汇总
  14. Adobe Camera Raw使用方法
  15. android9.0安装包更新,一加5官方安卓9.0稳定版固件rom系统升级更新包:第4版
  16. .pdm打开软件powerdesigner良心文章
  17. MyBatis批量操作和多参数查询
  18. 一头 一头百兆全双工 自动协商 测试
  19. 苹果开发者账号添加设备
  20. 深圳周边户外活动经典线路----转载

热门文章

  1. 海康威视工业相机SDK二次开发环境配置—Windows10+VS2017
  2. Thinkpad X200 换屏记
  3. python语句--条件语句
  4. 苹果iOS 5限制应用本地存储问题
  5. ampak正基RF定频安装指导
  6. Thunderbird 里面 QQ 企业邮箱 POP3/SMTP 设置
  7. itss认证费用多少钱
  8. 洛谷p2655 2038年问题 普及/提高- 模拟
  9. hive中如何判断字符串是否是数字
  10. 一章——Web网站服务(一)(应用—linux高级管理)