C语言知识点

这篇博客详细介绍了C语言的基础知识,包括数据类型(基本、构造、指针、空类型)、运算符和表达式、输入输出操作(如printf和scanf函数)、选择结构(if语句的三种形式)、循环结构(while、do-while、for循环)以及数组的概念和使用。此外,还涉及到了函数、指针和自定义数据类型(结构体、共用体和枚举)的概念和应用。内容全面,适合C语言初学者学习。
摘要由CSDN通过智能技术生成

C语言知识点

一、数据类型

数据类型分类
基本数据类型,构造数据类型,指针类型,空类型四大类,详细如下:
在这里插入图片描述

二、运算符和表达式

运算符
在这里插入图片描述
表达式
是由常量、变量、函数和运算符组合起来的式子

  1. 一个表达式有一个值及其类型, 等于计算表达式所得结果的值和类型。
  2. 表达式求值按运算符的优先级和结合性规定的顺序进行。
  3. 单个的常量、变量、函数可以看作是表达式的特例。

三、输入输出操作

基本输入输出函数

  1. putchar():把变量中的一个字符常量输出到屏幕上
  2. getchar():从键盘上输入一个字符常量,此常量就是该函数的值
  3. printf():把变量中的各类数据,加以格式控制输出到屏幕上
  4. scanf():从键盘上输入各类数据,并存放到程序变量中
  5. puts():把数组变量中的一个字符串常量输出到屏幕上
  6. gets():从键盘上输入一个字符串常量并放到程序的数组中
  7. sscanf():从一个字符串中提取各类数据

printf格式输出函数
按用户指定的格式向终端(或系统隐含指定的输 出设备) 输出。
printf函数的一般形式:
在这里插入图片描述
在这里插入图片描述

printf(格式控制,输出表列)
格式控制
用双引号括起来的字符串,也称“转换控制字符串”
① 格式说明符
作用是将输出的数据转换为指定的格式输出。
由“%”和格式字符组成,如%d,%f, %c等。
② 普通字符
需要原样输出的字符。如双引号内的字符串、 逗号、空格 和换行符。

输出表列
输出列表为需要输出的一些数据
若参数列表中若包含多项参数,则用逗号分隔。
参数可以为变量、常量、函数以及其他表达式。
各输出项必须与格式控制字符串严格对应。
在这里插入图片描述

scanf格式输入函数

​ 按用户指定的格式从键盘上输入数据,将其值存储到相应的变量之中。

scanf函数的一般形式:

scanf(格式控制,地址表列)

  1. 格式控制 —含义同printf函数;
  2. 地址表列 —由若干个地址组成的表列
  3. 必须保证两者的一一对应

scanf格式输入函数

  • 若需要连续输入多个数值,一般用空格、回车符或制表符分隔数据。
  • 可以在格式控制字符串中指定的特殊分隔符。但不建议使用,增加输入复杂度
scanf ( "%d  %c   %f "&i,&c , &f )scanf (%d,%c ,%f ”, &i,&c , &f )scanf( ”i=%d c=%c f=%f”, &i,&c,&f);  

四、选择结构

if语句分支结构的三种形式

  1. 基本形式

​ if(表达式) 语句

  1. if-else形式

​ if(表达式)

​ 语句1;

​ else

​ 语句2;

在这里插入图片描述

  1. if-else if形式

    •if(表达式1)

    • 语句1;

    •else if(表达式2)

    • 语句2;

    • …

    •else if(表达式m)

    • 语句m;

    •else

    • 语句n;

在这里插入图片描述

if语句需要注意的问题

  • 在三种形式的if语句中,在if关键字之后均为表达式。
  • 在if语句中,条件判断表达式必须用括号括起来,在语句之后必须加分号。
  • if语句的嵌套时,为了避免这种二义性,C语言规定,else 总是与它前面最近的if配对。

五、循环结构

循环控制语句的三种形式

  1. while循环语句

while (表达式)

语句;

  • 计算while后面括号里表达式的值,若其结果非0,则转入②,否则转③
  • 执行循环体,转①。
  • 退出循环,执行循环体下面的语句

在这里插入图片描述

  1. do-while循环语句

do

语句;

while(表达式);

①执行循环体,转②

②计算while后面括号里表达式的值,若其结果非0,则转入① ,否则转③

③退出循环,执行循环体下面的语句。

在这里插入图片描述

  1. for循环语句

for ( [表达式 1]; [表达式 2 ]; [表达式3] )

语句;

表达式1:一般为赋值表达式,给控制变量赋初值;

表达式2:关系表达式或逻辑表达式,循环控制条件;

表达式3:一般为赋值表达式,给控制变量增量或减量;

①首先计算表达式1,然后计算表达式 2。

②若表达式2为真,则执行循环体;否则,退出 for循环,执行for循环后的语句。

③如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计算表达式2,依此循环,直至表达式 2的值为假,退出循环。

在这里插入图片描述

六、数组

数组概念

数组是用来存储一组数据的构造数据类型。

只能存放一种类型的数据,如全部是int型或者全部是char型。

一维数组的格式

类型 数组名[元素个数];

举例:存储5个人的年龄

int ages[5]; //在内存中开辟4x5=20个字节的存储空间

  1. 一维数组的初始化

①. int ages[5]={17,18,19,20,21};//一般写法

②. int ages[5]={17,18};//只对前两个元素赋值

③. int ages[5]={[3]=10,[4]=11};//对指定的元素赋值,这里为第三个和第四个

计算数组元素

int count=sizeof(ages)/sizeof(int); //数组的总长度除以单个的长度等于元素个数

遍历数组

for(int i=0;i<5;i++)

printf(“ages[%d]=%d\n”,i,ages[i]);

  1. 二维数组

二维数组本质上是以一维数组作为数组元素的数组,即“数组的数组”。

二维数组的格式

类型 数组名[元素个数] [元素个数] ;

举例:存储3组年龄,每组10个人

int ages3;//数组能够存放3个数组,每个数组存放10个数值,共3x10=30个数值

七、函数

函数概念

函数(Function)是一段可以重复使用的代码。

C语言程序由多个函数组成,main() 是入口函数,只能有一个。

函数的一般形式

返回值类型 函数名(参数列表){
函数体
}

函数分类

从函数定义的角度

  • 库函数:由C系统提供,用户无须定义.
  • 用户定义函数:由用户按需要写的函数。

从函数返回值的角度

  • 有返回值函数:此类函数被调用执行完后将向调用者返回一个执行结果,称为函数返回值。
  • 无返回值函数:此类函数用于完成某项特定的处理任务,执行完成后不向调用者返回函数值。

从主调函数和被调函数之间数据传送的角度

  • 无参函数:函数定义、函数说明及函数调用中均不带参数
  • 有参函数:也称为带参函数。在函数定义及函数说明时都有参数,称为形式参数(简称为形参)。

八、指针

指针概念

内存单元的编号叫做地址(Address),也称为指针(Pointer)。

对于一个内存单元来说,单元的地址(编号)即为指针,其中存放的数据才是该单元的内容。

指针原理

设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示)。设有指针变量P,内容为011A,这种情况我们称为P指向变量C,或说P是指向变量C的指针。

指针变量

变量的指针就是变量的地址。存放变量地址的变量是指针变量。

一个指针变量的值就是某个变量的地址或称为某变量的指针。

指针变量的形式

类型说明符 *变量名;

int *p1; // 表示p1是一个指针变量,它的值是某个整型变量的地址。或者说p1指向一个整型变量。

九、自定义数据类型

结构体

结构体是一种构造数据类型(也称复杂数据类型),由若干不同类型的变量组成。

每个变量都是结构体的成员(member),每个成员可以是基本数据类型,也可以是构造类型。

结构体形式

struct 结构体名{
成员列表

};

struct Student{
int age;  //年龄
char *name; //姓名
char sex; //性别
};

共用体

共用体(共同体)的定义和结构体类似。

共用体的所有成员共享一段内存,它们的起始地址一样,并且同一时刻只能使用其中的一个成员变量。

共用体形式

union 共用体名{
成员列表
};

union Test
{
    int age;
    char sex;
    float soloar;
};

枚举类型

枚举(Enum)类型,可以列出所有可能的取值。

枚举值(也称为枚举元素)为常量,不是变量,不能赋值。

枚举类型的形式

enum 变量名{枚举值列表 };

例如,列出一个星期有几天

enum week{sun, mon, tue, wed, thu, fri, sat};

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾亿-唯一

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值