c语言基本知识点复习总结

时光荏苒,岁月如梭。自从高二以来,我好像就再也没有碰过c语言,当年记忆中的知识点如今也裂成了一块块碎片。正值暑假之际,考虑到我未来大概率会选择计算机相关专业,所以我决定对c语言进行一个简单的复习,并将过程中的心得记录于此以防再次遗忘。由于只是简单复习,所以大部分知识点不会进行细致的展开,如果您是希望进行更全面的学习的阅读者,这篇总结可能并不能让您满意,还望谅解。不过您也可以直接联系我以进行询问,我会尽己所能帮助您。

1.数据的存储类型及命名

c语言中,数据分为常量与变量两种

常量编译后不可改变,是一个固定的量。变量是一个可变的量,可在程序运行的过程中随着情况改变而变化。

每一个量(以及函数)都必须有标识符,通俗上标识符就是量的名字。标识符由且尽可由字母、数字、下划线组成,且第一个字符不能是数字。标识符分为关键字、预定义标识符和用户标识符,关键字是c的自保留标识符,不可以使用;预定义标识符已经定义过了,不可以再次定义但可以用使用(如printf)。通常情况下正常编程都不会遇到标识符问题。标识符区分大小写且不能重复。

32个关键字如下表:

标识符有自己的可见域,编程时要注意这一点。在下级域中定义的变量在该域中会屏蔽掉上级域中的同名变量,称为影子变量(尽量别用)。

c的变量和常量最基本分为int、char、float、double、string几种类型。定义方法如下:

int a;//设置整数型变量a
int b = 0;//设置整数型变量b,且初始值为0
char c = 'A';//设置字符型变量c,初始值为A
float d = 1.1;//设置浮点型变量d,初始值为1.1
double e = 1.0000000001;//设置双精度浮点变量e,初始值为.....
string f = 'woshisb';//设置字符串型变量f,初始值......

形如(int) a的代码可以强制转换数据类型,不四舍五入。

八进制数以0开头,十六进制数以0x开头,如011=9,0x11=17。

2.c语言的基本运算符

1.算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(%)、自增(++),自减(–)

2.关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)、不等于(!=),其结果用1(true),0(false)表示。所有不为0的判断结果均视为1。

3.赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=、-=,*=、/=、%=)。

4.逻辑运算符:用于逻辑运算。包括逻辑与(&&)、或(||),非(!)。其结果用1,0表示。

5.逗号运算符:用于把若干表达式组合成一个表达式(,),从左往右运行

3.c语言的输入输出

所以本节中的输入输出函数需包含头文件stdio.h (标准输入输出头文件)
#include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。

输出

printf() 用于格式化输出到屏幕。printf() 函数在 “stdio.h” 头文件中声明

//此程序会输出:Number = 1
#include <stdio.h>
int main()
{
    int a = 1;
    printf("Number = %d", a);
    return 0;
}

其中,%d意味着其对应a的数值,且输出形式为整数,如果有更多,其后一一对应
%d为格式化输出符号,格式化输出符号有:
%d:用于输出十进制整数。
%c:用于输出字符。
%f:用于输出浮点数。

%s:用于输出字符串。
%u:用于输出无符号十进制整数。
%p:用于输出指针。
%x 或 %X:用于输出十六进制数,%x表示输出小写字母,%X表示输出大写字母。
%o:用于输出八进制数。
%e 或 %E:用于输出科学计数法表示的浮点数。
%g 或 %G:用于输出浮点数,但是没有无意义的零。

输入

scanf意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。scanf() 函数也在 “stdio.h” 头文件中声明

//此程序会输出:Number = 1
#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%d", &a);  //输入整数并赋值给变量a
    printf("Number = %d", a);//输出变量a的整数值
    return 0;
}

&为地址符号,代表把输入的数存储变量a的内存地址中

此外还有一些其他不常用的输入方法
getchar()函数从屏幕读取下一个单个字符,并把它返回为一个整数。
gets() 函数可用于从屏幕读取字符串,直到读取到了终止符才会结束。

4.判断语句

if语句

if是c语言中最常用的判断语句,他的最基本用法为

if (/*条件1*/){
    /*满足条件1将要运行的代码*/
};

当括号内条件布尔值为1(true)时,将执行下面域内的代码;当布尔值为0(false)时,不会执行下面域内的代码。请注意布尔值中任何非0数都将被视为1

此外,if语句还有其他额外扩展用法,如下:

if (/*条件1*/){
    /*满足条件1将要运行的代码*/
}
else if (/*条件2*/){
    /*不满足条件1但满足条件2将要运行的代码*/
}
else if (/*条件3*/){
    /*不满足条件1、2但满足条件3将要运行的代码*/
}
else {
    /*什么都不满足时将执行的代码*/
};

else if是if的拓展语句,必须在if后面和else前面。当其存在时,将从上到下进行条件检测,满足后就会进入对应代码,对应代码运行完后会直接结束整个if语句,不会继续进行判断。
else也是if的拓展语句,必须在最后面,且只能有一个。当else以上的每一个判断都不成立时,将执行else内的内容。
else if与else可单独加入,也可以都有

if语句内还可以接着套娃if语句

以下是一个非常完整的if语句代码案例(来源网络):

#include <stdio.h>
 
int main()
{
	int a = 19;
 
	if (a < 10)
	{
		printf("a 的值小于10\n");
	}
	else if (a < 20)
	{
 
		printf("a 的值小于20\n");
	}
	else if (a < 30)
	{
		printf("a 的值小于30\n");
	}
	else
	{
		printf("没有匹配的值\n");
	}
 
	return 0;
}

switch语句

switch是一个相对不常用的判断语句
一个 switch 语句允许测试一个变量等于多个值时的情况,每个值称为一个 case,且被测试的变量会对每个 case进行检查。

int a=1;
switch(a){
   case 0;//检测a是否等于0
       printf('a等于0');
   case 1;//检测a是否等于1
       printf('a等于1');
       a++;//此时a变成2
   case 2;//检测a是否等于2
       printf('a等于2');
   case 3;//检测a是否等于3
       printf('a等于3');
};

将输出”a等于1a等于2“

注意,case中的条件只能为常量,且不能重复。

当运行到break语句时,会直接结束当前正在执行的判断和循环。

5.循环语句

循环结构一共有三种,分别是for语句(♥),while语句,do-while语句

break会直接终止整个循环,而continue会终止当前正在进行的循环并进行下一次循环检测

循环语句可以套娃

while语句

while语句是最基础的循环语句,它的语法如下

while(/*循环进行的条件*/)
{
   /*将执行的语句*/
};

当条件满足时,就会执行语句,然后再回来继续检测,直到条件不满足才会结束,以此达到循环

do-while语句

do while语句基本等同while语句,只不过他会先运行一次再判断是否继续循环,语法规则如下。

do
{
   /*运行的语句*/

}while( /*继续运行的条件*/ );

for语句

平心而论,for语句是我最喜欢的循环语句,因为它操作简单且覆盖面广。不过他的语法相对复杂。

for ( ini t; /*循环的条件*/; increment )
{
   /*运行的语句*/
};

for的括号内有3个部分,彼此之间必须用分号隔开,除了循环条件,另外两个部分可以留空。

int部分,可以用来定义一些控制循环的变量,该变量仅在该for循环可见,且循环终止后会被释放;increment部分,可以配合++、–运算符来完成对一个变量的控制。for循环是先满足循环条件,再运行它的语句。

6.函数

函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() 
函数一般为如下结构:

return_type function_name( parameter list )
{
   /*函数内容*/
}

一个函数通常由以下部分组成

  • 函数返回值:一个函数可以返回一个值,return_type代表了函数的返回值类型,如果没有返回值,可以使用void类型。
  • 函数名:函数的名称,也是标识符
  • 参数:调用函数时,向函数发送一个值,这个值是实参。参数可以为空
  • 函数内容

使用函数前要先声明,声明的语法:

return_type function_name( parameter list );

意义同上

函数调用时,需输入函数名(参数)
c是穿值调用,这意味着虚参改变不会影响实参

7.指针

指针是一个用来指向地址的变量,他存储的数据是内存中的地址
指针也存在数据类型,但它的数据类型值的是所指向的数据的类型,指针本身的值始终为地址

以下是指针的定义:

int    *a;    /*一个整型的指针*/
a = &b; /*a指向b的地址*/

定义指针时,须在标识符前面加上*,代表所定义的是指针。&会引出后面的变量的地址

为确保程序运行稳定,推荐为指针赋予初始值NULL,意为空指针(0x0)

int *a = NULL;

8.数组

c语言中允许定义数组,数组是同一类型的数据的集合,你可以将字符串视为字符的数组。

在 C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:

int a[10];//定义一个长度为10的整数数组a
int b[] = {1,2,3,4};//定义一个长度为4的整数数组b且赋予初始值
a[1]=b[1];//为a数组中的第一个数赋予b数组中的第一个数的值

为数组赋予初始值时,赋予的数量必须小于数组长度。当数组没有长度时,长度等于赋予数。
c数组必须有长度,不允许定义不定数组

使用size可以获取数组长度,具体是用总数组长除于但数据长。

int numbers[] = {1, 2, 3, 4, 5};
int length = sizeof(numbers) / sizeof(numbers[0]);

9.附录

ASCLL表

结语

复习到这里差不多就告一段落了,c其实在实际运用中还有很多细节,但在这里受限于篇幅无法展开,有兴趣的话可以自行查阅。如果您对文章本身有什么不明白的,可以发送在下方评论区。如果这篇文章能帮助到您的话,那对我而言也是不胜感激。

评论

  1. 博主
    7 月前
    2024-6-27 18:20:29

    终于完工了  ̄﹃ ̄

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇