一.字符 字符串 指针字符
目录
在学习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.总结
字符由字符变量,字符指针接收
字符串由字符数组接收,由字符指针变量接收
一.字符 字符串 指针字符相关推荐
- HTML怎么统计字符,字符串中字符统计.html
Document var str = prompt("请输入一段字符"); console.log(str); function calculate(str) { // 将字符串转 ...
- 字符串,字符指针,字符串指针,字符数组
对于指针可能是大多数程序员最痛苦的事,尤其是指针和字符串和数组三者放在一起的时候,经历了几次错误后,我打算总结一下这几者的区别. 字符串:"asdasfsff",c语言中后面有'\0'. 字符数组:A ...
- 「MacOS」Swift 第三章:字符串和字符
3 字符串和字符 字符串和字符分别使用 String 类和 Character 类表示,字符串是一系列字符的集合. 字符串之间的拼接使用+号完成:也可向可变字符串中插入常量.变量.字面量,这一过程称为 ...
- python100day - 07day-集合、字符串和字符
python100day - 07day-集合.字符串和字符 集合 1.什么是集合(set): 1)集合是容器型类型,将{}作为容器的标志,里面多个元素用逗号隔开:{元素1, 元素2, 元素3, -} ...
- C语言中字符数组和字符串指针分析
写下面的测试程序: #include <stdio.h> int main(int argc, char *argv[]) { char day[15] = "abcdefghi ...
- 第十节 字符串指针变量与字符数组的区别(十一)
用字符数组和字符指针变量都可实现字符串的存储和运算.但是两者是有区别的.在使用时应注意以下几个问题: 1) 字符串指针变量本身是一个变量,用于存放字符串的首地址.而字符串本身是存放在以该首地址为首的一 ...
- c 将数字数组转成字符串_C+|用指针指向字符串字面量、字符数组及字符指针数组...
指针可以指向一个字符串字面量,可以指向一个字符数组,可以指向一块动态分配的内存单元: char *s1, *s2, *s3 = "abcde"; char ch[] = " ...
- Delphi 的字符及字符串[4] - 字符串、字符指针与字符数组
//字符串 < > 字符数组 vararr: array[0..5] of Char;str: string; begin{可以把字符串常量直接赋给字符数组; 但超界不行}arr := ' ...
- C语言 多重指针--整型字符字符串 int**pp
介绍 多重指针:一个指针指向另一个指针 离值越近的指针级别越大:一级 内存布局 代码 图示: 多重指针–整型 #include<stdio.h> #include<string.h& ...
最新文章
- jquery和css3打造超梦幻的三维动画背景
- webpack 搭建rect项目
- 【Android 进程保活】应用进程拉活 ( 账户同步拉活 | 账号添加 | 源码资源 )
- LeetCode周总结--第一周
- 验证码画布生成以及点击图片切换验证码
- 【JUC系列】Future异步回调模式
- 开源,免费,跨平台——白鹭引擎(Egret Engine)
- matlab中 mcc/mbuild/mex 区别
- 千峰python资料下载_千锋Python基础视频教程全集下载
- IP协议和IPX协议的区别
- 【机器学习】21个机器学习面试问答
- android截图保存在哪,电脑f12截屏一般保存在什么位置 | 手游网游页游攻略大全...
- adb 连接方式汇总
- Adobe Camera Raw使用方法
- android9.0安装包更新,一加5官方安卓9.0稳定版固件rom系统升级更新包:第4版
- .pdm打开软件powerdesigner良心文章
- MyBatis批量操作和多参数查询
- 一头 一头百兆全双工 自动协商 测试
- 苹果开发者账号添加设备
- 深圳周边户外活动经典线路----转载