c语言基本知识点回顾

本文主要回顾C语言的基础知识,包括数据类型、转义字符、进制表示、常量与符号常量、指针、函数、内存管理和文件输入/输出等。讲解了C语言的特性,如直接访问物理地址,位操作,以及各种运算符和类型转换。同时介绍了预处理器、宏定义和泛型选择(C11)等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c语言

1.c语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
2.编译器把源代码转换成中间代码,链接器把中间代码和其他代码合并,生成可执行文件。可以独立编译单独的模块,稍后用链接器合并已编译的模块。IDE(集成开发环境)。

3.常量与符号常量:
符号常量:#define 标识符 常量
#define PRICE 30, 编译前,预处理将出现的PRICE都替换为30

范围:
int型变量的范围是 -2147483648~2147483647
unsigned int型变量的范围是0~4294967295
unsigned int取值范围0到4294967295(32位),0到65535(16位)
short int
unsigned short int
long int
unsigned long int
注意数据溢出问题

数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
float 占 32位:1个符号位,24个有效数字、非指数位,7个指数位 (c primer plus 6 p56)
double 通常占64位 : 至少能表示10位有效数字

字符型:char a = ‘a’;
c语言将字符常量视为int类型而非char类型,‘A’
打印字符:%c

字符串常量
以空字符结尾的char类型数组
结尾:\0
字符串常量(“hello world") 属于静态存储类别

几种声明方式:
char string[20] ; //20个连续的储存单元,可以存放19个字符,最后一个留给空字符’\0‘
const char *str1 = “hello world”;

char a;
scanf(“%c”, &a);
scanf(“%s”, string);

在这里插入图片描述

转义字符

在这里插入图片描述

进制表示

在这里插入图片描述
在这里插入图片描述
c显示进制:( %d 十进制 )( %o %#o 八进制 ) ( %x %#x %#X 十进制 )
在这里插入图片描述

一些常见标识符、关键字

const: 若放在*左侧任意位置,限定了指针指向的数据不能改变, 放在右侧,限定了指针本身不能改变
typedef:

_Generic
_Noreturn
_Static_assert

一些常见函数

getchar(),让程序等待一次击键
puts(str);//只打印字符串,并且末尾加上换行符
scanf(“%1f“, &temp); //读取的输入结尾是EOF (-1)
printf(”%1f", temp);
{ //一些打印输出结果:(修饰符、标记:-未在此处说明)
%a 浮点数,十六进制,p计数法
%A
%c 单个字符
%d 有符号十进制整数
%e 浮点数,e计数法
%E
%f 浮点数,十进制计数法
%g 根据值的不同,自动选择%f或%e,%e格式用于指数小于-4或者大于或等于精度时
%G
%i 同%d
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 无符号十六进制整数
%X
%% 打印一个%
}

sizeof():以字节为单位给出指定类型的大小 ,c99和c11规定用%zd来接收,若编译器不支持,可以用%u或%lu
strlen() : 用%zd来接收
putchar():输出单个字符

c预处理器和c库

#define、#include、#ifdef、#if、#elif、#line、#else、#endif、#ifndef、#error、#pragma

#define LIMIT 30

创建条件编译
预处理器无法识别{
   
   }, 所以需要来标记指令块,也可以嵌套
#ifdef MAVIS
	#include "/u/p.h"
	#define STA 5
#else
	#include "/u/w.h"
	#undef LIMIT
#endif

#ifndef 指令判断后面的标识符是否是未定义的,通常用来定义之前未定义的常量
	#define LIMIT 20
#endif

泛型选择(C11)

c11新增了泛型选择表达式:
在这里插入图片描述
在这里插入图片描述

一些头文件库

<string.h>
strlen():
<stdio.h> :标准输入输出头文件
<ctype.h>: 字符函数相关头文件
在这里插入图片描述
<stdbool.h> :bool 代替_Bool

宏定义

1.通过宏定义进行注释,而非嵌套注释:
在这里插入图片描述

命名

小写、大写、数字、下划线,第一个字符不能是数字

类型转换

无论是自动还是强制类型转换,都是在当条语句的结果有效(int)(x+y)

算术运算符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

逻辑运算符

与 、或、 非
&&
||

异或、

具体见本文末 位运算

条件运算符 ?:

x = ( y < 0 ) ? -y : y;

函数

使用函数之前,要声明函数原型:
void show_char(char ch, int num);
void main(void){
return 0;
}
void show_char(char ch, int num){

}

指针

地址运算符:&
间接运算符:* (解引用运算符)

p = &h;
v = *p;
v == h; // true

声明指针:*
int *p;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值