LearningC_Lecture1_general_concepts

编程工具

工欲善其事,必先利其器。C语言是一门编译型的计算机语言,需要依赖编译器将计算机语言转换成机器能够执行的机器指令。那常见的C语言编译器都有哪些呢?

msvc、clang、gcc 就是一些常见的编译器,当然也有一些集成开发环境如:VS2022、XCode、CodeBlocks、DevC++、Clion 等。

集成开发环境(IDE)是用于提供程序开发环境的应用程序,一般包括代码编辑器、 编译器 、 调试器和图形用户界面等工具,是集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套装。简单来说,我们只要在Windows环境下安装好VS2022这一个软件,就具备了C程序开发的所有条件(VS2022集成了msvc编译器)。XCode则是MacOS平台的集成开发环境(集成了clang编译器)。

本笔记中的代码均由Windows环境下的VS2022软件实现。

在这里插入图片描述

优点:

  • VS2022 是一个主流的集成开发环境,企业中使用较为普遍;
  • 包含了:文本编辑器 + 编译器 + 调试器,功能强大;
  • 直接安装即可使用,基本不用额外配置环境,上手容易;
  • 默认中文界面,初学者友好。

缺点:

  • 功能丰富,安装包大,占用空间多。

VS2022安装教程

Windows环境下推荐使用VS2022社区版,因其免费,使用方便,较为常见。
安装教程见B站鹏哥教程,链接: VS2022安装使用教程,Visual Studio 2022详细安装使用调试教程C语言编译器,C++编译器

第一个C程序

安装VS2022,新建项目,并新建源文件(.c文件)后,在源文件中写入以下代码:

#include <stdio.h>

int main()
{
	printf("Hello, X战警。\n");

	return 0;
}

Ctrl + F5 执行命令“开始执行(不调试)”,或点击软件上方工具栏“调试 - 开始执行(不调试)”。

输出结果:

Hello, X战警。

C:\code\gitee\learning-c\LearningC_1_general_concepts\x64\Debug\LearningC_1_general_concepts.exe (进程 43336)已退出,代码为 0。
按任意键关闭此窗口. . .

编译和链接

C语言是一门编译型计算机语言,C语言源代码都是文本文件,文本文件本身无法执行,必须通过编译器的翻译和链接器的链接,生成二进制的可执行文件,可执行文件才能执行

C语言代码是写在以.c 为后缀的文件中的,要得到最终运行的可执行程序,中间要经过编译和链接2个过程。

一个工程一般会由多个源文件组成,每个源文件.c文件)单独经过编译器处理生成对应的目标文件(以.obj为后缀的文件),多个目标文件和库文件经过链接器处理生成对应的可执行文件(.exe文件)。

库函数

printf

转义字符

字符串和 \0

  1. 字符串的末尾隐藏一个 \0,\0 被认为是字符串的结束标志,体现在:
    1. 当打印字符串的时候,打印到 \0 就自动停止。
    2. 当求字符串长度的时候,也是统计到 \0 为止,即统计的是 \0 之前字符的个数。

代码示例:

#include <stdio.h>
#include <string.h>   // string 字符串 头文件

int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c'};
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("%zd\n", strlen(arr1));   // %zd
	printf("%zd\n", strlen(arr2));

	return 0;
}

注意,因为使用了求字符串长度的库函数strlen(),所以开头引入了字符串相关库函数的头文件<strling.h>,同时根据warning提示将打印%d修改为打印%zd

warning C4477: “printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“size_t”
请考虑在格式字符串中使用“%zd”

输出结果:

abc
abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫贴->1?
3
42

C:\code\gitee\learning-c\LearningC\x64\Debug\LearningC.exe (进程 43964)已退出,代码为 0。
按任意键关闭此窗口. . .

结果可以看到,字符串arr2因为是由三个单独的字符变量构成,末尾并没有字符串结束符 \n,所以额外打印出了一串随机代码,字符串长度也相应统计成了42。

代码示例:

int main()
{
	printf("%zd\n", strlen("c:\test\114\bbc"));

	return 0;
}

输出结果:

10

C:\code\gitee\learning-c\LearningC\x64\Debug\LearningC.exe (进程 42452)已退出,代码为 0。
按任意键关闭此窗口. . .

注意,由于在字符串"c:\test\114\bbc"中,\t\114\b分别代表三个转义字符,因此字符串长度应为7+3=10,而不是15。

注释

代码记录

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
	//printf("hello X战警\n");     // \n是换行
	//printf("%d\n", 100);   // %d 指整型,%d是占位符,会被后面的值替代
	//printf("%c\n", 'X');   // %c 指字符,''单引号内是字符,""内是字符串 
	//printf("%f\n", 3.14);  // %f 指单精度浮点型

	//int a = 0;
	//scanf("%d", &a);       // scanf 键盘输入 库函数
	//printf("a = %d\n", a);

	 ASCII
	
	//printf("%c\n", 'z');
	//printf("%c\n", 122);     // 这两行命令都会输出字符z

	//int i = 1;
	//for (i = 32; i <= 127; i++)
	//{
	//	printf("%c ", i);
	//}

	 字符串和 \0
	// 每个字符串后都有一个隐藏的 \0

	//printf("abcdef\n");
	//printf("%s\n", "abcdef");   // 打印字符串
	
	//char arr1[] = "abc";
	//char arr2[] = { 'a', 'b', 'c' };
	//char arr3[] = { 'a', 'b', 'c', '\0' };

	//printf("%s\n", arr1);
	//printf("%s\n", arr2);
	//printf("%s\n", arr3);

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值