[C]基础1.常见概念(上)

  • 博客主页:算法歌者
  • 本篇专栏:[C]
  • 您的支持,是我的创作动力。


0、总结

在这里插入图片描述

1、介绍

1、C语言

C语言:是一种计算机语言,能给计算机下达指令,让计算机运行工作。

C语⾔最初是作为Unix系统的开发⼯具⽽发明的,回顾历史,窥探C语言发展时期:

  • 1969年发明B语言。

  • 1972年发明C语言,取代B语言。

  • 1973年Unix用C语言重写。

  • 1988年C语言标准化

2、编译和链接

C语言是一种编译型语言。C语言源代码是文本文件,人类通过编辑器输入C语言源代码,源代码通过编译器进行翻译产生若干个目标文件,目标文件和链接库通过链接器进行链接,生成二进制的可执行文件。

在一个工程中,由多个源代码组成,工作过程下图所示,说明了源代码通过编译器和链接器进行处理的过程。

在这里插入图片描述

因为C语言是一种编译型语言,离不开编译器,常见的编译器有msvc、clang、gcc。

集成开发环境(IDE)是提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。

适合新手上手的集成开发环境(IDE):

  • Windows:VS2022、DevC++
  • Mac:XCode

适合进阶:

  • vscode

  • vim

3、VS项目

在C语言中,带.c后辍称之为源文件,带.h后辍称之为头文件

在VS上写代码,需要先创建项目。在项目中可以新建若干个源文件和头文件。

1、我喜欢的字体

在这里插入图片描述

2、第一个C语言程序

#include <stdio.h>
int main()
{
	// 编译 + 链接 + 运行代码
	// 按:Ctrl+F5 or fn+Ctrl+F5
	printf("hello,world!\n");
	printf("Let's stick to programming\n");
	return 0;
}
输出:
hello,world!
Let's stick to programming

在这里插入图片描述

2、函数

1、main函数

main函数:代码从main函数开始执行,是程序的入口。

框架如下:

int main()
{

	return 0;
}

在一个项目中,无论源文件有多少个,只能有一个main函数。

在这里插入图片描述

2、printf函数

printf函数:是一个库函数,按照指定的格式来打印,其中print意为打印,f是format意为格式

// printf函数的库文件,意为标准输入输出头文件
// .h 头文件
// std standard 标准
// i input
// o output
#include <stdio.h>
int main()
{
	printf("hello world\n");
	printf("%s\n", "hello");
	printf("%c\n", 'h');
	// 97的ASCII对应值是a
	printf("%c\n", 97);
	printf("%d\n", 100);
	// C语言默认的浮点常数是double型
	// 3.14f的f作用是强制转化为float类型
	printf("%f\n", 3.14f);
	printf("%lf\n", 3.14);
	return 0;
}
输出:
hello world
hello
h
a
100
3.140000
3.140000

这里的%s,%c,%d,%f,%lf是占位符,使用频率非常高,作用是被后面的值替换。

3、关键字

关键字/保留字:C语言中有一些保留的名字,比如int、if、return等等。

C语言关键字:C 关键词 - cppreference.com,使用时查看即可。

3、字符和字符串

1、字符和ASCII编码

ASCII码表:ASCII 码表 - cppreference.com,使用时查看即可。

常用的ASCII码值:

常用的ASCII码值码值
字符A的码值65
字符a的码值97
数字字符0码值48
换行的码值10
码值的0~31这32个字符无法在屏幕上观察
字符a和A的码值之间差值是32
#include <stdio.h>
int main()
{
	printf("%c\n", 'A');
	printf("%c\n", 'A' + 32);
	printf("%d\n", '\n');
	printf("%c\n", 65);
	return 0;
}
输出:
A
a
10
A

输出ASCII码值:

#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 32; i <= 127; i++)
	{
		printf("%c", i);
		if (i % 16 == 15)
			printf("\n");
	}
	return 0;
}
输出:
 !"#$%&'()*+,-./
0123456789:;<=>?
@ABCDEFGHIJKLMNO
PQRSTUVWXYZ[\]^_
`abcdefghijklmno
pqrstuvwxyz{|}~

2、字符串和\0

字符串:在C语言中,用双括号起来的一串字符,如:“abcdef”,是一个字符串。

#include <stdio.h>
int main()
{
	printf("%s\n", "hello world");
	printf("hello world\n");
	// 字符和字符串的区别
	// 'a'   字符
	// "abc" 字符串
	printf("%c\n", 'a');
	printf("%s\n", "abc");
	printf("abc");
	return 0;
}
输出:
hello world
hello world
a
abc
abc

C语言字符串的末尾隐藏着一个\0字符,\0字符是字符串的结束标志。如下:

在这里插入图片描述

越界访问,如下:

#include <stdio.h>
int main()
{
	char arr1[] = "abc";
	char arr2[] = { 'a', 'b', 'c' };

	printf("%s\n", arr1);
	// 越界访问
	printf("%s\n", arr2); 
	return 0;
}
输出:
abc
abc烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫贴-?

在这里插入图片描述

相似概念:内存越界内存泄漏内存溢出

  • 内存越界:非法访问内存。

  • 内存泄漏:申请了空间不释放。

  • 内存溢出:想分配的内存超出系统给予的范围。

3、转义字符

转义字符:转变原来字符的意义。

转义序列:转义序列 - cppreference.com,使用时查看即可。

#include <stdio.h>
int main()
{
	printf("%c\n", '\'');
	printf("%s\n", "\"");
	printf("\a");
	// 130是8进制,转换10进制是88,88的ASCII码值是'X'
	printf("%c\n", '\130');
	// x30是16进制,转换16进制是48,48的ASCII码值是'0'
	printf("%c\n", 'x30');

	// 三字母词:??)  --> ]
	//         ??(  --> [
	// 有的编辑器可能会输出:(are you ok]
	// \? 用于三字母词
	printf("(are you \?\?)");
	
	// 综合运用
	// strlen函数作用是求字符串长度的时候,
	// 统计的是\0之前字符的个数。
	printf("\n");
	// \ddd:ddd表示1~3个八进制的数字
	// \xdd:dd表示2个十六进制的数字
	// \0:null字符,代表没有内容,用于字符串的结束标志,ASCII码值是0。
	int len = strlen("c:\test\bit\123.c");
	printf("%d\n", len);
	return 0;
}
输出:
'
"
X
0
(are you ??)
12

4、语句

1、空语句

空语句:一个分号就是一条语句。

#include <stdio.h>
int main()
{
	; // 空语句
	return 0;
}

2、表达式语句

表达式语句:在表达式的后面加上分号。

#include <stdio.h>
int main()
{
	int a = 20;
	int b = 0;
	b = a + 5; // 表达式语句
	return 0;
}

3、函数调用语句

函数调用语句:在函数调用的时候,加上分号。

#include <stdio.h>
int Add(int x, int y)
{
	return x + y;
}
int main()
{
	printf("hello\n"); // 函数调用语句
	int ret = Add(2, 3); // 函数调用语句
	return 0;
}
输出:
hello

4、复合语句

复合语句:成对括号中的代码就构成一个代码块。

#include <stdio.h>
int Add(int x, int y) // 函数的大括号中的代码构成复合语句
{
	return x + y;
}
int main()
{
	int i = 0;
	int cnt = 0;
	for (i = 0; i < 10; i++) // for循环的大括号中是复合语句
	{
		printf("%d ", i);
		printf("%d\n", ++cnt);
	}
	return 0;
}
输出:
0 1
1 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
9 10

5、控制语句

控制语句:用于控制程序的执行流程。

C语言支持3种结构(顺序结构、选择结构、循环结构),可以分以下三类,C语言有九种控制语句。

结构语句
条件判断语句/分支语句if语句、switch语句。
循环执行语句do while语句、while语句、for语句。
转向语句break语句、continue语句、goto语句、return语句。

5、注释

注释:对代码的说明,编译器会忽略注释。

C语言中有两种注释,在开发中,最常用的是第二种。

第一种:
 /**/ 
 
第二种:
//

注意,在编译时,注释会被替换成一个空格。如下。

hello/*这是注释*/world,会变成hello world,而不是helloworld

完。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值