C语言总结(基础)

一、C语言的结构

*  代码中main是主函数的函数名,表示这是一个主函数,每一个C源程序都必须有,且只能有一个主函数(main函数)。 

*  函数调用函数printf()的功能是把要输出的内容送到显示器去显示。 

*  scanf 是 scan format 的缩写,意思是格式化扫描,也就是从键盘获得用户输入,和 printf 的功能正好相反。它们都有格式控制字符串,都有变量列表。不同的是,scanf 的变量前要带一个 & 符号。 & 称为取地址符,也就是获取变量在内存中的地址。

*  对于 scanf(),输入数据的格式要和控制字符串的格式保持一致。

 *  格式控制符

 *  注意:在编写代码的时候必须使用英文半角输入法,尤其是标点符号,初学者一定要引起注意。

*  注释:给程序员看,注释的代码不会编译执行。                                                                               
(1)块注释。

用符号“ /* ”和“ */ ”标出注释的开始和结束,在符号“ /* ”和“ */ ”之间的任何内容都将被编译程序当作注释来处理。 


 

(2)行注释。

用符号“ // ”标出注释行,从符号“ // ”到当前行末尾之间的任何内容都将被编译程序当作注释来处理。 

二、变量与数据类型 

基本类型是C语言内部预先定义的数据类型,也是实际中最常用的数据类型,比如整型、字符型、单精度型、双精度型等。   

1、基本数据类型 

short、int、long、char、float、double,这六个关键字代表C语言里的六种基本数据类型。 

2、常量与变量

1、字符常量

*   字符常量是用一对单引号( '  ' )括起来的一个字符。例如,'b'、'='、'5'都是字符常量。在计算机中,字符常量有以下特点。

(1)字符常量只能用单引号( '  ' )括起来,不能用双引号或其他符号括起来。

(2)字符常量只能是单个字符,不能是多个字符。

(3)字符可以是字符集中的任何字符。

2、转义字符

3、变量

(1)标识符

*   标识符是用来标识变量、符号常量、数组、函数、文件等名字的有效字符序列。C语言规定,标识符只能由字母、数字、下划线组成,且第一个字符必须为字母或下划线。

例如:sum、_sum、dome、p2、Sir_Name等都是合法的标识符。

*  标识符中的字母是区分大小写的。一般情况下,变量名用小写字母,特殊的标识符用大写字母。

*   保留字(或者被称为关键字)不能用作于标识符。

*    在实际写程序的过程中定义标识符应做到“见名知意”。(意思是:看到这个名字,就大概能知道是什么意思。)

(2)关键字

C语言中一共有32个关键字:

关键字说明
auto声明自动变量
short声明短整型变量
int声明整型变量
long声明长整型变量
float声明浮点型变量
double声明双精度变量
char声明字符型变量
struct声明结构体变量
if条件语句
else条件语句否定分支(与 if 连用)
switch用于开关变量
case用于语句分支
for一种循环语句
do循环语句的循环体
while循环语句的循环条件
goto无条件跳转语句
continue结束当前循环,开始下一轮循环
break跳出当前循环;表示终止本层循环
default开关语句中的“其他”分支
signed声明有符号类型变量
unsigned声明无符号类型变量
union声明共用数据类型
enum声明枚举类型
typedef用以给数据类型取别名
const声明只读变量
extern声明变量是在其他文件正声明
register声明寄存器变量
static声明静态变量
volatile说明变量在程序执行中可被隐含地改变
void声明函数无返回值或无参数,声明无类型指针
sizeof计算数据类型长度
return子程序返回语句(用来终止一个函数并返回后面跟着的值)

4、运算符与表达式

(1)算术运算符

C语言的算术运算符包括两个单目运算符('+'正和负'-')和双目运算符(加法( + )、减法( - )、乘法( * )、除法( / )、取模 ( % )5种。)。

其中加法、减法、乘法、除法运算符就是数学中的四则运算,求模运算就是求余数。

#include <stdio.h>			 
 int main(){							
	int n = 10;
	int m = 4;
	float t = 5.5;
	 	
	int a =	n + m;     	//加
	int b = n - m;		//减
	float c = m * t;	//乘	 
	double d = n / t;	//除 
	int e = n % m;  	//求余	  	       
	printf("a等于%d,b等于%d,c等于%f,d等于%lf,e等于%d",a,b,c,d,e ); 
}

运行结果:a等于14, b等于6,    c等于22.000000, d等于1.818182, e等于2 

(2)关系运算符: < 、> 、<= 、>= 、== 、!=

< (小于);  > (大于);   <= (小于等于);  >=  (大于等于);  == (等于);   != (不等于);

(3)赋值运算符: += 、 -= 、 *= 、 /= 、 %= 、 =

a += 1; ( 意思:a = a + 1; )

a -= 1; ( 意思:a = a - 1; )

a *= 1; ( 意思:a = a * 1; )

a /= 1; ( 意思:a = a / 1; )

a %= 1;  ( 意思:a = a %1; )

a = 1; ( 意思:  是把右边的值,赋给左边的变量 )  

(4)自增/自减运算符

C语言中还有两个特殊的运算符,即自增运算符"++"和自减运算符"--".自增、自减运算符对变量的操作效果分别是使变量增加1或减少1。

自增运算符(++)和自减运算符(--)是单目运算符,运算对象必须是变量,不能为表达式或常量。

(1)++a、--a表示变量在使用之前先自增1、自减1。

(2)a++、a--表示变量在使用之后先自增1、自减1。

#include <stdio.h>
int main(){
	int a=1;			//定义变量a=1 
	a++; 				//a++是使用之后先自增1 
	printf("现在a的值:%d",a);		//现在a的值是2 
	a--;				//a--是使用之后先自减1
	printf("现在a的值:%d",a);    	//现在a的值是1
	
	++a;				//++a是使用之前先自增1
	printf("现在a的值:%d",a);		//现在a的值是2
	--a;				//--a是使用之前先自减1
	printf("现在a的值:%d",a); 		//现在a的值是1
}

 (5)逻辑运算符:

符号功能示例含义
&&逻辑与A&&B

A、B两个表达式都为真时,逻辑运算结果为真

A、B两个表达式只要有一个为假,逻辑运算结果为假

||逻辑或A||B

A、B两个表达式都为假时,逻辑运算结果为假

A、B两个表达式只要有一个为真,逻辑运算结果为真

!逻辑非!A

A表达式为真,逻辑运算结果为假

A表达式为假,逻辑运算结果为真

*逻辑表达式:逻辑表达式的结果也是一个逻辑值“真”或“假”,C语言用整数1和0表示。当逻辑表达式结果为“真”时,值为1;当逻辑表达式结果为“假”时,值为0。

(6)位运算符:

C语言提供的6类位运算符:

位运算符含义
&按位与("与"运算符)
|按位或("或"运算符)
~取反("取"运算符)
^按位异或("异或"运算符)
<<左移("左移"运算符)
>>右移("右移"运算符)

 
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
链表是一种常用的数据结构,用于存储一系列元素。C语言中,链表是通过指针来实现的,每个节点包含数据和指向下一个节点的指针。 以下是链表的基础知识总结: 1. 链表的定义: ```c struct Node { int data; struct Node* next; }; ``` 其中,data 表示节点存储的数据,next 表示指向下一个节点的指针。 2. 链表的操作: - 创建节点: ```c struct Node* createNode(int data) { struct Node* node = (struct Node*) malloc(sizeof(struct Node)); node->data = data; node->next = NULL; return node; } ``` - 插入节点: ```c void insertNode(struct Node* head, int data) { struct Node* node = createNode(data); node->next = head->next; head->next = node; } ``` 其中,head 表示链表头节点。 - 删除节点: ```c void deleteNode(struct Node* head, int data) { struct Node* p = head->next; struct Node* q = head; while (p != NULL) { if (p->data == data) { q->next = p->next; free(p); break; } q = p; p = p->next; } } ``` - 遍历链表: ```c void traverseList(struct Node* head) { struct Node* p = head->next; while (p != NULL) { printf("%d ", p->data); p = p->next; } printf("\n"); } ``` - 销毁链表: ```c void destroyList(struct Node* head) { struct Node* p = head->next; while (p != NULL) { struct Node* q = p; p = p->next; free(q); } head->next = NULL; } ``` 3. 链表的优缺点: 链表的优点是插入和删除操作的时间复杂度为 O(1),而数组的时间复杂度为 O(n)。但是,链表的缺点是无法随机访问元素,需要遍历整个链表才能找到要查找的元素。此外,链表需要额外的空间来存储指向下一个节点的指针。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值