常量和字符串(C语言初阶细致)

       ❤️总有你不会的,学到就是赚到 ❤️

作者:每天都要记得刷题(●’◡’●)
时间:2022/04/02

测试:如果你能做对这道题,我就允许你点个赞后离开。(👍👍大佬大佬👍👍)
printf(“%d\n”, strlen(“c:\test\628\test.c”));
答案:查看目录对答案

常量的分类

常量和变量的比较:
在这里插入图片描述

int a=10;//a就是变量
char ch=b;//b就是常量,常量只能以作为左值出现

字面常量

😇字面上理解的常量就被我们当作是字面常量,就是这么简单.例如Hello world.

const修饰的常变量

结论:const修饰的常变量同时具有常量和变量的属性(正因为难以界定,所以起名为常变量)

在这里插入图片描述
上图勘误:关键

证明:常量性质&变量性质

1.证明常量性质:

🚗*(1)由const定义:*

在这里插入图片描述

🚗*(2)无法被直接修改:(但是能被间接修改)*

在这里插入图片描述

备注:const 修饰的常变量能被指针间接修改:

#include<stdio.h>
int main()
{
	const int a = 10;
	int* p = &a;
	*p = 5;
	printf("%d", a);
	return 0;
}

运行结果:

在这里插入图片描述

2.证明变量性质:

(1)a不能在定义数组时作数组元素(该位置只能是常量)

备注:关联知识:动态内存开辟形成的原因
在这里插入图片描述

#define定义的标识符常量

引言:C语言中,可以用 #define 定义一个标识符来表示一个常量.

  1. 标识符:C语言规定,标识符可以是字母、数字、下划线(A~Z, a~z, 0~9, _)组成的字符串,并且第一个字符必须是字母或下划线。
    2.#开头的都是预处理命令(暂时不必深究),例如#include
#define MAX 10
备注:此处MAX即为标识符,由#define和enum定义的变量习惯是全大写,又如:#define  PI  3.14

#define定义的不局限于整数,还可以是字符串
备注:#define末行习惯不加分号;
打印字符串一定一定要加双引号

在这里插入图片描述

enum枚举常量

枚举类型:即是可以被一一列举出来的常量,把他们组合起来形成的一个集合,被称为是枚举类型.
常识:
三原色:红色(RED)/绿色(GREEN)/蓝色(BLUE)是可以被一一列举出来且关联,因此可以使用enum枚举.
在这里插入图片描述

字符类型

字符与字符串比较

在这里插入图片描述

代码检测证明是否有\0作为结束标志:
在这里插入图片描述
结论(超级重要):字符没有’\0’作为结束标记

分别打印字符 和字符串:
解释:
0.字符数组定义时可以省略数组元素个数。
1.%s是专门来打印字符串的,当遇到’\0’时结束打印操作;
2.字符的’\0’需要手动添加,不加就无法停止打印;而字符串的’\0’在末尾自动添加,
3.但由上面的结论(字符没有’\0’作为结束标记)得知在打印字符的时候一直没有遇到结束标志,就会出现"烫烫烫烫"出错.
在这里插入图片描述

但是如果我就想打印出char ch1[] = {‘a’,‘b’,‘c’};
下面提供两种方法:

方法一:

🚗(1)借用循环+%c打印
在这里插入图片描述

方法二:

🚗(2)在char ch1[] = {‘a’,‘b’,‘c’};中手动添加一个’\0’,变成:
char ch1[] = {‘a’,‘b’,‘c’,‘\0’’};
在这里插入图片描述

借用strlen来求字符串长度:
Q:什么是strlen?
A:strlen是求字符串长度(有效字符,即是肉眼可见的实际字符)的一个函数,在MSDN可以查找相关定义,头文件和返回值
在这里插入图片描述
解释:strlen是也是以\0作为结束标志的,原理和上面的%s类似
备注:可以利用好MSDN这个工具,解决一些问题

转义字符(答案😇在这)

ASCII表的由来

:我们知道电脑存储是将数据转换为二进制来存储的,那么就会产生一个问题就是字符怎么转换成二进制存储起来,所以聪明的程序员就将字符映射成数字,例如‘0’映射成了48,‘A’映射成了65,‘a’映射成了97。(只要记住’0’,‘a’,'A’就可以了)
由此拓展:
🚗大写字母‘A’转换成‘a’:大写字母‘A’+32=‘a’
🚗字符‘4’转数字4:‘4’-‘0’
🚗数字4转字符‘4’:‘0’+4
在这里插入图片描述

🐼常见的转义字符

\n换行符(反斜杠不要写反)
\t制表符
\0字符串结束标志符号
在这里插入图片描述
如果你还有更多关于ASCII表方面的疑惑,速戳:
ASCII百科全书
在这里插入图片描述

😇答案14
易错点解释:源自\ddd, \62是一个字符,表示的是一个八进制的数字(\628的8不属于八进制了),转换为十进制是6*16+2=98
在这里插入图片描述

            ❤️关注我一起成长 ❤️
C语言中,字符串常量是由一对双引号括起来的字符序列,例如"hello world"。字符串常量在内存中以字符数组的形式存储,以空字符'\0'作为结束标志。可以通过printf函数使用%s格式输出字符串常量。\[2\] 字符数组是由一组字符组成的数组,可以用来存储字符串。字符数组的定义和初始化可以使用字符数组的形式,例如char s1\[\]="hello world",也可以逐个字符赋值,例如char s2\[20\]; s2\[0\]='h'; s2\[1\]='e'; s2\[2\]='l'; s2\[3\]='l'; s2\[4\]='o'; s2\[5\]=' '; s2\[6\]='w'; s2\[7\]='o'; s2\[8\]='r'; s2\[9\]='l'; s2\[10\]='d'; s2\[11\]='\0';。字符数组可以通过printf函数使用%c格式输出单个字符,也可以使用puts函数输出整个字符串。\[3\] 需要注意的是,字符常量和字符数组在赋值和输入时的方式是不同的。字符常量可以直接赋值给字符变量,例如char c='a';而字符数组需要使用strcpy函数或者逐个字符赋值的方式进行赋值。在输入时,字符常量可以使用scanf函数直接输入,例如scanf("%c",&a);而字符数组需要使用scanf函数逐个字符输入,或者使用gets函数一次输入整个字符串。\[1\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [C语言字符常量字符串常量、字符数组使用](https://blog.csdn.net/guorongyi/article/details/117827664)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码上心头

为爱发电

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值