目录
第一章 初识C语言
1.C语言基础知识
2.C语言的构成
3.第一个C语言程序
4.数据类型
5.变量
5.1定义变量的方法
5.2变量的分类
5.3变量的使用
5.4变量的作用域和生命周期
6.常量
6.1符号常量
6.2字符串常量
6.3字符常量
6.4实型常量
6.5整型常量
6.6其它常量
7.字符串+转义字符+注释
7.1字符串
8.选择语句
9.循环语句
10.函数
11.数组
11.1数组的定义
11.2数组的下标
11.3数组的使用
12.操作符
13.常见关键字
14.#define定义常量和宏
15.指针
15.2指针的大小
16.结构体
旨在大概了解一下C语言中的主要内容,后面的章节会详细讲解每一个内容。
详细内容:
https://blog.csdn.net/YLG_lin/article/details/126159445
C语言入门教程合集_记忆&碎片的博客-CSDN博客_c教程
(1)结构紧凑,使用方便,程序执行效率高。
(2)有9种控制语句,32个关键字和34种运算符。
(3)数据结构丰富,可实现链表,树,栈等复杂的运算。
(4)语法不太严格,程序设计自由度大。
(5)程序可直接访问物理地址,对硬件操作,移植性好。
(1)源程序由函数构成,每个函数完成相对独立的功能。
(2)每个源程序中必须有且只能有一个主函数(main函数),可以放在任意位置,但程序总是从主函数开始执行。
(3) 函数体:在函数后面用一对花括号{}括起来的部分。
(4)每个语句以分号结束,但预处理命令,函数头之后不能加分号。
(5)注释:括在/*与*/之间,(/与*之间没有空格),允许出现在程序的任意位置。(本文7.3中有提及)
(6)预处理命令:以#开头的语句。
#include //头文件
int main()
{
printf("hello world\n");
printf("he he\n");
return 0;
}
//main函数是程序的入口
//一个工程中main函数有且仅有一个
//\n为换行
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点型
double //双精度浮点型
#include
int main()
{
printf("%d\n", sizeof(char)); //1(字节/byte)
printf("%d\n", sizeof(short)); //2
printf("%d\n", sizeof(int)); //4
printf("%d\n", sizeof(long)); //4
printf("%d\n", sizeof(long long)); //8
printf("%d\n", sizeof(float)); //4
printf("%d\n", sizeof(double)); //8
printf("%d\n", sizeof(long double)); //8
return 0;
}
1byte(字节)=8bit(位)
1kb=1024byte
1mb=1024kb
1gb=1024mb
1tb=1024gb
.......
#include
int main()
{
int age = 20;
float weight = 57.0;
char ch = 'w';
return 0;
}
全局变量&局部变量
#include
int age = 20; //这是全局变量 {}外部定义的
int main()
{
int age = 10; //这是局部变量 {}内部定义的
printf("age = %d\n", age); //当局部变量与全局变量名字冲突时,局部变量优先使用。
//不建议不全局变量与局部变量的名字写成一样的。
return 0;
}
当局部变量与全局变量名字冲突时,局部变量优先使用,所以输出为10;
#include
int main()
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d", &a, &b);//scanf函数 是输入函数。具体用法详看后面章节
sum = a + b;
printf("%d\n", sum);//printf函数是输出函数
return 0;
}
作用域:通常来说,一段程序代码中所用到的名字并不总是有效的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
局部变量:作用域为变量所在的局部范围。
全局变量: 作用域为整个工程。
生命周期:变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
局部变量生命周期:进入作用域生命周期开始,出作用域生命周期结束。
全局变量生命周期:整个程序的生命周期。
定义:在程序运行中,其值不能被改变的量
符号常量是由预处理命令“define”定义的常量,在c程序中可用标识符代表一个常量。
字符串常量是用“ ”括起来的一个或者一串字符。
一个字符常量代表ASCII码字符集里的一个字符,在程序中用‘ ’括起来,区分大小写。
特殊的字符常量:即转义字符。其中\是转义的意思,后面跟不同的字符表示不同的意思。
\n(换行)
\\(代表反斜杠\)
ddd:1-3位八进制数所代表的一个ASCII字符。
xxh:1-2位十六进制数所代表的一个ASCII字符
表示形式:小数形式和指数形式。
书写形式:
1,十进制小数形式:小数点两边必须有数字。
2,指数形式:e前必须有数字(不需是整数),e后面必须为整数。
表示形式:十进制整型常量,八进制整型常量,十六进制整型常量。
书写形式:
1,十进制整型常量:基本数字范围为0-9;
2,八进制整型常量:以0(数字0)开头,基本数字范围为0-7;
3,十六进制整型常量:以0X(数字0)开头,基本数字范围为0-15,其中10-15写为a-f或A-F;
#include
//举例
enum Color
{
bule,
green,
yellow //最后一个不用逗号隔开
};
//括号中的bule,green,yellow是枚举常量
int main()
{
//字面常量演示
3.14;//字面常量
1000;//字面常量
//const 修饰的常变量
const float pai = 3.14f; //这里的pai是const修饰的常变量
pai = 5.14;//是不能直接修改的!
//#define的标识符常量 演示
#define MAX 100
printf("max = %d\n", MAX);
//枚举常量演示
printf("%d\n", bule);
printf("%d\n", green);
printf("%d\n", yellow);
//注:枚举常量的默认是从0开始,依次向下递增1的
return 0;
}
"hello world\n"
#include
int Add(int x, int y) {
return x+y; }
/*C语言风格注释
int Sub(int x, int y)
{
return x-y;
}
*/
int main()
{
//C++注释风格
//int a = 10;
//调用Add函数,完成加法
printf("%d\n", Add(1, 2));
return 0;
}
#include
int main()
{
int coding = 0;
printf("你会好好学习C语言吗?(选择1 or 0):>");
scanf("%d", &coding);//选择输入0或者1
if(coding == 1) //判断coding是否等于1,等于1为真,执行“坚持...”否者执行“放弃...”
{
prinf("坚持,你会有好offer\n");
}
else
{
printf("放弃,工地搬砖\n");
}
return 0;
}
#include
int main()
{
printf("好好学习C语言\n");
int line = 0;
while(line<=20000) //程序不断在while里循环直到line<=20000时程序才跳出while循环执行后面的代码
{
line++; //每经历一次while循环line加一
printf("我要继续努力敲代码\n");
}
if(line>20000)
printf("收到好offer\n");
return 0;
}
函数的特点就是简化代码,代码复用。
#include
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);//输入两个数
sum = num1 + num2;
printf("sum = %d\n", sum); //输出结果
return 0;
}
#include
int Add(int x, int y) //int为函数的返回类型,x与y为函数形参。
{
int z = x+y;
return z; //返回结果z给sum。
}
int main()
{
int num1 = 0;
int num2 = 0;
int sum = 0;
printf("输入两个操作数:>");
scanf("%d %d", &num1, &num2);
sum = Add(num1, num2); //标识符后加()即为函数,num1与num2为实参,用逗号隔开。
printf("sum = %d\n", sum);
return 0;
}
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
int arr[10] = {0};
//如果数组10个元素,下标的范围是0-9
#include
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++) //for循环打印数组arr【10】中的内容
{
printf("%d ", arr[i]); //for循环在后面循环章节有详细用法讲解
}
printf("\n");
return 0;
}
算术操作符
+ - * / %
//define定义标识符常量,MAX=1000;
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y)) //ADD(x, y) = ((x)+(y))
#include
int main()
{
int sum = ADD(2, 3);
printf("sum = %d\n", sum);
sum = 10*ADD(2, 3);
printf("sum = %d\n", sum);
return 0; }
#include
int main()
{
int num = 10;
# //取出num的地址
//这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
printf("%p\n", &num);//打印地址,%p是以地址的形式打印
return 0;
}
int num = 10;
int *p;//p为一个整形指针变量
p = #
#include
int main()
{
int num = 10;
int *p = #
*p = 20;
return 0;
}
#include
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
printf("%d\n", sizeof(char *));
printf("%d\n", sizeof(short *));
printf("%d\n", sizeof(int *));
printf("%d\n", sizeof(double *));
return 0; }
struct Stu
{
char name[20];//名字
int age; //年龄
char sex[5]; //性别
char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps- >id);