初始C语言-1(数据类型、变量、常量、变量的作用域和生命周期、字符串+转义字符+注释)

news2024/9/23 7:33:46

目录

一、C语言

 C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)

C语言发展至今都是排行前三的计算机语言。

随着物联网,万物互联,以及嵌入式开发和单片机开发,C语言是必然的趋势。

 C语言的标准:主流的为 C89 C90

计算机语言的发展: 2进制 - 汇编语言 - B语言 - C语言

 二、第一个C语言程序

C语言的代码是从main函数的第一行开始执行的main函数是程序的入口 - 有且仅有一个main函数 - 可以在任意位置

 三、数据类型

 --C语言里有哪些单位?

 --为什么出现这么多数据类型?

四、变量

1)变量

1.变量的命名

2.变量的分类

五、变量的作用域和生命周期

1. 作用域:

1)局部变量的作用域:是局部变量所在的局部范围

 2)全局变量的作用域:整个工程  

2.变量的生命周期

局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

全局变量的生命周期:整个程序的生命周期

六、常量

1.字面常量 

2.const 修饰的常量:本质上是个变量,但是具有了常属性,不能被修改

验证const 修饰的常量:本质是个变量 

**下面的代码在支持C99的编译器上可以编译的 

 3.#define定义的标识常量

4.枚举常量 

枚举 - enum

容易被一一列举出来的值:

 七、字符串+转义字符+注释

1.字符串

C语言表示字符:用单引 号。例如:'a'  '1'   '!'

C语言表示字符串:用双引号。 例如:"abc"  

注意:字符串的结束标志是一个 \0 的转义字符,不算做字符串的内容。例如:"abc"  --> a  b  c  \0 

2.转义字符  

常见用法:

*特别的:三字母词:  ??后加一个字符 

例如:??) 转义为 ]

思考

 3.注释

给代码进行注释,解释每段代码的意思

用双左斜杠 // 注释单行内容 (C++的注释风格)  (推荐使用:支持嵌套)

用 /**/  给多行注释(C语言的注释风格) (不推荐:不支持嵌套使用)


一、C语言

 C语言主要运用于底层,也可以运用于上层软件(早期还没有其他的语言的时候,很多游戏就是C语言做的)

C语言发展至今都是排行前三的计算机语言。

随着物联网,万物互联,以及嵌入式开发和单片机开发,C语言是必然的趋势。

 C语言的标准:主流的为 C89 C90

计算机语言的发展: 2进制 - 汇编语言 - B语言 - C语言

 二、第一个C语言程序

C语言的代码是从main函数的第一行开始执行的
main函数是程序的入口 - 有且仅有一个main函数 - 可以在任意位置

 写一个c代码,在屏幕上打印 hello world

#define _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
//主函数
int main()
{
//printf 是一个库函数 - C语言的标准库中的一个现成的函数,直接就能使用
//功能:在屏幕上打印信息
//输出函数,打印函数,使用前一定要包含头文件 stdio.h
//stdio.h 标准输入输出头文件

printf("hello world\n");

return 0;
//}

主函数的其他写法 


//推荐
//int main()
//{
//
//	return 0;
//}

//可以这样写
//int main(void)
//{
//
//	return 0;
//}

//古老的写法 - 不建议
//void main()
//{
//}

 

 三、数据类型

 --C语言里有哪些单位?


bit        - 比特
byte    - 字节 1byte = 8bit
KB                1KB=1024byte
MB                1MB=1024KB
GB                1GB=1024MB
TB                1TB=1024GB
PB                1PB=1024TB

int main()
{
	printf("%d\n", sizeof(char));		//1字节
	printf("%d\n", sizeof(short));		//2
	printf("%d\n", sizeof(int));		//4
	printf("%d\n", sizeof(long));		//4		//C语言标准:sizeof(long)>=sizeof(int)
	printf("%d\n", sizeof(long long));	//8
	printf("%d\n", sizeof(float));		//4
	printf("%d\n", sizeof(double));		//8

	return 0;
}
int main()
{
	int num = 20;		//向内存申请4个字节空间存储 20 这个整型数据
	char ch = 'b';		//向内存申请1个字节空间存储 b 这个字符数据
	return 0;
}

 --为什么出现这么多数据类型?

用合适的类型,存储各种数据
内存利用率高,写代码更灵活

四、变量

1)变量

1.变量的命名

  1. 由字母(包括大写和小写),下划线(_),数字组成!
  2. 不能由数字开头!
  3. 变量名不能使用关键字!
  • 长度不能超过63个字符
  • 变量区分大小写
  • 变量名尽量起的有意义
     

2.变量的分类

  1. 局部变量:在{}内部定义的变量就是局部变量
  2. 全局变量:在{}外部定义的变量就是局部变量
     
int main()
{
	int num = 10;//num是变量,创建变量时,最好给个初始值
	printf("%d\n", num); //10
	num = 20;
	printf("%d\n", num); //20

	return 0;
}

 全局变量和局部变量的名字可以相同,但是在使用时局部优先

 局部变量里的名字不能相同

int num = 100;//全局变量
int a = 1000; 

int main()
{
	int a = 10;//局部变量
	printf("%d\n", a);

	//int a = 20;//创建的局部变量不能重名!!
	//printf("%d\n", a);
	return 0;
}

五、变量的作用域和生命周期

 

  1. 局部变量的作用域:是局部变量所在的局部范围
  2. 全局变量的作用域:整个工程  (缺点是不安全)

1. 作用域:

1)局部变量的作用域:是局部变量所在的局部范围

void test()
{
	printf("%d\n", a);//无法使用
}

int main()
{
	int a = 10;
	printf("%d\n", a);
	{
		int b = 20;
		printf("%d\n", b);
	}
	//printf("%d\n", b); //b不在作用域里,无法使用printf打印出来
	return 0;
}

 2)全局变量的作用域:整个工程  


int a = 100;

void test()
{
	printf("2:%d\n", a);
}

int main()
{
	printf("1:%d\n", a);
	test();
	return 0;
}

//声明外部符号(当使用此工程项目的另一个文件的变量时)
extern int g_val; //另一个文件下的变量g_val

int main()
{
	printf("%d\n", g_val);
	return 0;
}

2.变量的生命周期

  1. 局部变量的生命周期:进入作用域生命周期开始,出作用域生命周期结束

  2. 全局变量的生命周期:整个程序的生命周期

int main()
{
	{	//进入a的作用域,生命周期开始,再此作用域里a可以使用
		int a = 10;
		printf("%d\n", a);
	}//出a的作用域,生命周期结束
	//printf("%d\n", a); //a不在作用域里,无法使用printf打印出来
	return 0;
}

六、常量

生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)
有些值是可变的(比如:年龄,体重,薪资)
  1. 字面常量
  2. const 修饰的常量
  3. #define定义的标识常量
  4. 枚举常量

1.字面常量 

//1.字面常量
int main()
{
	100;//整型字面值
	'w';//字符字面值
	3.14;//浮点型的字面值
	"abcdef";//字符串常量

    return 0;	
}

2.const 修饰的常量:本质上是个变量,但是具有了常属性,不能被修改

//2.const 修饰的常变量
int main()
{
	const 常属性:值不能被改变
	const int num = 10;	//本质上是个变量,但是具有了常属性,不能被修改
	printf("%d\n", num);
	num = 20;  //err;无法修改值
	printf("%d\n", num);
    
    return 0;
}

验证const 修饰的常量:本质是个变量 

//数组
	//const int n = 10;	
	//int arr[n] = { 0 };	//n虽然被const修饰,具有常属性,不能被改变,但是本质上还是变量,所以不能用来指定数组的大小

**下面的代码在支持C99的编译器上可以编译的 


    //C99中,引入了:变长数组的概念,变长数组的大小是可以使用变量来指定的,但是数据不能被初始化
    //vs2013/vs2019是不支持C99的 ;Linux系统:gcc编译器 支持C99
    int n = 10;
    int arr[n] = { 0 };     

 

 3.#define定义的标识常量

//3.#define定义的标识常量

#define MAX 1000		//可以在全局定义

int main()
{
	printf("%d\n", MAX);
	//MAX = 2000; //无法修改常量MAX

#define MIN 0		//可以在局部定义
	printf("%d\n", MIN);

	int arr[MAX];	//可以运用在数组

	return 0;
}

4.枚举常量 

枚举 - enum

容易被一一列举出来的值:

性别:男,女,保密
三原色:RGB(红绿蓝)
血型:A B O AB RHB

//4.枚举常量
//枚举 - enum


//声明的一个表示性别的枚举类型
enum Sex
{
	//下面三个符号是Sex这个枚举类型的未来的可能的值
	//枚举常量
	MALE=5,	//默认为0,可以赋初值
	FEMALE,	//1
	SECRET	//2
};

int main()
{
	enum Sex s = MALE;
	printf("%d\n", MALE);	
	printf("%d\n", FEMALE);	
	printf("%d\n", SECRET);	
	return 0;
}

 七、字符串+转义字符+注释

1.字符串

  1. C语言表示字符:用单引 号。例如:'a'  '1'   '!'

  2. C语言表示字符串:用双引号。 例如:"abc"  

  • 注意:字符串的结束标志是一个 \0 的转义字符,不算做字符串的内容。例如:"abc"  --> a  b  c  \0 

#include<string.h>
int main()
{
	//char c1 = 'a';
	//char c2 = 'b';
	
	//数组
	//字符数组
	//char arr1[] = "abc";	//调试后发现:a b c \0 共四个字符
	//char arr2[] = { 'a', 'b', 'c' };//调试后发现:a b c 共3个字符

	//printf("%s\n", arr1);//打印 abc ,打印字符串,直到\0才终止打印
	//printf("%s\n", arr2);//打印 abc烫烫烫bc ,打印字符串,没有找到\0是不会停下来的

	char arr1[] = "abc";	//调试后发现:a b c \0 共四个字符
	char arr2[] = { 'a', 'b', 'c' };//调试后发现:a b c 共3个字符

	//strlen是一个库函数,专门打印字符串长度。在求字符串长度时,统计\0之前出现的字符的个数。
	int len = strlen(arr1);	//a b c \0
	printf("%d\n", len); //3

	len = strlen(arr2);//a b c .....\0
	printf("%d\n", len); //15(随机值),因为abc之后不知道\0在哪,所以一直找,直到\0才终止,说明此时\0前的字符有15个

	return 0;
}

2.转义字符  

 

 


int main()
{
	printf("abc\ndef");// \n - 换行
//结果为:
//abc
//def

	printf("abc\0def");// \0 - 字符串结束标志
//结果为:
//abc

	return 0;
}

常见用法:

int main()
{
    printf("%c\n", 'a');
	printf("%c\n", '\'');//想打印 ' 这个字符时,也需要转义\'

	printf("%s\n", "abc");
	printf("%s\n", "\"");//想打印 " 这个字符串时,也需要转义\"

	printf("%s\n", "abc\\ndef");//想打印 abc\ndef 这个字符串时,也需要转义\为\\

	printf("\a");//把声音调大一点,可以听到警告蜂鸣的声音

	printf("ab\bcdef");//acdef ,\b - 退格,把b删掉了

	printf("%c\n", '\130'); //ASCII码值为88的字符 - H
	八进制 130 转换为十进制 1*8^2 + 3*8^1 + 0*8^0 =64+24+0 =88
	
	printf("%c\n", '\x63');//ASCII码值为99的字符 -c
	十六进制 163 转换为十进制 6*16^1 + 3*16^0 =96+3 =99

	return 0;
}

 

*特别的:三字母词:  ??后加一个字符 

例如:??) 转义为 ]


//三字母词
//??) ---> ]
int main()
{
    printf("(are you ok??)");
    //想要打印(are you ok??) 变成了(are you ok]
    //所以在连续的?时,转义\?\?

    return 0;
}

思考


  

    printf("%d\n", strlen("abcedf"));                //6
    printf("%d\n", strlen("c:\test\628\test.c"));//14  

 3.注释

给代码进行注释,解释每段代码的意思

  1. 用双左斜杠 // 注释单行内容 (C++的注释风格)  (推荐使用:支持嵌套)

  2. 用 /**/  给多行注释(C语言的注释风格) (不推荐:不支持嵌套使用)

int main()
{
	/*
		int a = 10; //创建一个变量a ,赋初值为10
	*/

	return 0;
}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/57479.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 面向对象的【三大特征】,你都掌握了吗

文章目录前言一、封装1.封装的概念2.访问修饰限定符3.初识 “ 包 ”4. static 成员static修饰成员变量static修饰成员方法static成员初始化二、继承1.为什么要继承2.继承的概念3.语法4.父类成员访问1.子类中访问父类的成员变量2.子类中访问父类的成员方法5. super 关键字6. 子类…

RabbitMQ之单机多实例部署

单机版安装前面介绍过了&#xff0c;不再介绍。 此处在单机版基础上 &#xff0c;也就是一台Linux虚拟机上启动多个RabbitMQ实例&#xff0c;部署集群。 1、在单个Linux虚拟机上运行多个RabbitMQ实例&#xff1a; 多个RabbitMQ使用的端口号不能冲突多个RabbitMQ使用的磁盘存…

李宏毅《DLHLP》学习笔记6 - 语言模型

视频链接&#xff1a;https://www.youtube.com/watch?vdymfkWtVUdo&listPLJV_el3uVTsO07RpBYFsXg-bN5Lu0nhdG&index8&ab_channelHung-yiLee 课件链接&#xff1a;https://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/ASR3.pdf 1. Language Model LM的作用是预…

嵌入式Linux 开发经验:注册一个 misc 设备

前言 之前买过好几本Linux 设备驱动的书&#xff0c;不过对设备驱动一知半解&#xff0c;什么叫设备&#xff0c;什么又叫驱动&#xff1f;最近工作需要&#xff0c;从源码级别深入的研究了一下 Linux 下的设备与驱动的概念&#xff0c;略有所收获 一般提起驱动开发&#xff0…

[附源码]Python计算机毕业设计Django基于Java的图书购物商城

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

visual stduio code 配置高效舒适web生产环境

与webstrom 之前写了一篇webstorm的配置&#xff0c;参考同学的建议&#xff0c;vscode可能使用的人更多&#xff0c;所以配置了一个vs来试用看看。 一直用不习惯的是全文搜索&#xff0c;还是更喜欢webstrom弹窗式的&#xff0c;还可以显示上下文。包括其他的配置&#xff0…

第二证券|小鹏持续萎靡,理想蔚来逆势反弹破月销记录

12月1日&#xff0c;多家造车新势力先后公布11月销量数据。跟着“银十”出售旺季热度淡去&#xff0c;新势力品牌销量也受轿车零售商场逐渐冷却影响出现整体下滑。接连稳居榜首的埃安、哪吒等品牌均出现4位数以上环比销量下滑。上月商场体现低迷的抱负与蔚来则逆势添加&#xf…

TensorFlow之文本分类算法-6

1 前言 2 收集数据 3 探索数据 4 选择模型 5 准备数据 6 模型-构建训练评估 构建输出层 构建n-gram模型 构建序列模型 GloVe&#xff08;英文全称是Global Vectors for Word Representation&#xff09;是一个全球化的英语语境的单词表示的向量集&#xff0c;其使用非…

新变化新营销 这些知识点你得 Get!(文末有 PPT 福利首次放送)

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 在刚刚结束的第 7 期火山引擎数智平台 VeDI「增长课堂」上&#xff0c;火山引擎数智平台 VeDI 零售行业解决方案、汽车行业解决方案团队&#xff0c;以及慢慢买平台…

LM2903VQPWRQ1比较器 LM73C0QDDCRQ1传感器的中文资料

1、LM2903-Q1双路差分比较器包含两个独立的电压比较器&#xff0c;这些比较器可在宽电压范围内由单电源供电运行。如果两个电源之间的电压差在2V至36V且VCC比输入共模电压至少高1.5V以上&#xff0c;那么它们也可以由双电源供电运行。电流消耗不受电源电压的影响。可将输出连接…

一文带你深入理解【Java基础】· Java集合(下)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

Pikachu靶场全关攻略(超详细!)

一、靶场搭建 准备工具 phpstudy**pikachu靶场下载地址&#xff1a;**https://github.com/zhuifengshaonianhanlu/pikachu 搭建过程 将靶场文件夹放到phpstudy的www目录 进入pikach文件夹的inc目录&#xff0c;修改靶场配置文件config.inc.php&#xff0c;设置数据库账号密…

Ubuntu 安装 Zotero, 并导入原有数据库,然后同步账户

文章目录写在前面一、下载 Linux 下的 Zotero二、安装Zotero三、导入自己的数据库三、同步账户参考链接写在前面 发文时间&#xff1a;2022.12.03 自己的系统是Ubuntu20.04.5&#xff0c;Zotero 是 Zotero-6.0.18_linux-x86_64.tar.bz2 一、下载 Linux 下的 Zotero 直接登录…

魔兽世界开服教程——魔兽世界服务器架设全攻略---战网+Ladder排行版

需要用到的软件&#xff1a; 1. WAMP5 v1.7.exe &#xff08;这个是为排行榜提供数据库服务&#xff0c;为Mysql数据库&#xff09; 2.PvPGN-1.8.2-0-Win32-MySQL-5.0.45-BIN.zip PvPGN-1.8.2-0-Win32-SQLite-3.5.1-BIN.zip &#xff08;这三个是战网主文件&#xff09; pvpgn-…

使用dos命令符操作,感光屏绘图,ccd摄像头采集图像,并按程序进行机械加工的计算机

使用dos命令符操作&#xff0c;感光屏绘图&#xff0c;ccd摄像头采集图像&#xff0c;并按程序进行机械加工的计算机 使用dos命令符操作&#xff0c;感光屏绘图&#xff0c;ccd摄像头采集图像&#xff0c;并按程序进行机械加工的计算机是一种可以按照dos命令符复制磁带程序&…

yolov1算法思想流程简单讲解概述————(究极简单的讲述和理解)

在我想学习算法的时候&#xff0c;我看某些大佬特别喜欢上来就讲论文&#xff0c;给我搞的贼难受&#xff0c;毕竟本人太辣鸡了&#xff0c;上来这么搞看不懂&#xff0c;经过诸多算法的这样折磨。我打算根据自己的亲身经历和学习过程中遇到的问题出一期&#xff0c;先讲算法整…

智能优化算法(源码)—蜣螂优化算法(Dung beetle optimizer,DBO)

获取更多资讯&#xff0c;赶快关注上面的公众号吧&#xff01; 文章目录启发数学模型滚球跳舞繁殖觅食偷窃伪代码2022年11月27日&#xff0c;东华大学沈波教授团队&#xff0c;继麻雀搜索算法之后&#xff0c;又提出了一种全新的群体智能优化算法——蜣螂优化&#xff08;Dung …

功率信号源在超声波及智能骨料损伤监测中的应用

实验名称&#xff1a;超声波及智能骨料损伤监测原理 研究方向&#xff1a;无损检测、损伤定位 实验原理&#xff1a;换能器所产生的高频信号在介质中传播遇到裂缝、空洞等缺陷产生反射、折射、绕射等现象到达接收端时大量衰减&#xff0c;声学参量发生一定的变化&#xff0c;基…

ABAP学习笔记之——第七章:ABAP数据字典

一、数据字典 在 ABAP 程序里使用的所有对象 (表、视图、结构体、类型等)统称为 ABAP 数据字典。这些对象的信息叫 Metadata 或者 Data Definition&#xff0c;另外&#xff0c;ABAP 数据字典有定义和管理数据结构&#xff0c;集中管理系统中使用的对象的功能。 数据字典类型&…

Spring框架(五):SpringAop底层原理和注解配置

SpringAop底层原理和注解配置引子Aop简介利用Aop原理实现一个Demo&#xff08;代理模式&#xff09;Aop的xml方式实现Aop的注解方式实现总结引子 痛定思痛&#xff0c;主要问题出现在自己雀氏不熟悉框架底层、一些面试题&#xff0c;以及sql的一些情况淡忘了。 本章节的开始是…