C程序设计(第四版)谭浩强著-学习笔记

文章为博主拜读谭老师《C程序设计(第四版)》后所做学习笔记,大约耗时10天左右,整理成文档以便自己日后复习回顾,现将其贴出,供各位参考批评指点,如有不当之处请指教(第一次在此发博客,很多地方不甚明白,请各位指点!因自己喜欢讲知识点总结成表格方便记忆比较,不太会用此编辑器,故截图贴出。)。
1.加油
2.程序组成
|在这里插入图片描述

3.数据类型
3.1 数据类型
在这里插入图片描述
3.2 常量类型
在这里插入图片描述
3.3 转义字符
在这里插入图片描述
3.4 格式字符/修饰符
见6.3(1)。

4.运算
4.1优先级
(1)i++与++i不同;
(2)附录D;
4.2不同类型混合运算
float/double>int>char
(1)双目运算有一个为float/double,则结果为double,必有小数点;
(2)char数据与int整型运算,结果为整型;
(3)a=5; a/2:a为整型则结果为2;a为double则结果为2.5;
在这里插入图片描述在这里插入图片描述
4.3强制转换类型
(类型名)(表达式)
eg: %要求两侧均为整型,float x; x%3; //不合法,改为int(x)%3

5.头文件
5.1stdio.h
standard input&output. header标准输入和输出.头文件
#include<stdio.h> //标准方式
#include”stadio.h” //先当前目录再标准方式
5.2math.h
5.3stdlib.h
5.4string.h

  1. C语句

6.1 表达式/语句
在这里插入图片描述
6.2赋值语句
在这里插入图片描述
6.3输入输出
(1)数据输出
6.3输入输出
(1)数据输出
在这里插入图片描述
在这里插入图片描述
(2)数据输入
在这里插入图片描述
(3)字符输出

putchar ( )
说明 ①put character②将ASCII码赋值给字符变量,范围0-127

eg: char a=’B’,b=79 //定义
putchar(a); //常规操作
putchar(b); //ASCII码79对应字符
putchar(‘\131’) //ASCII码131对应字符
putchar(‘\n’) //转义字符换行
输出:BOY
(4)字符输入

getchar ()
说明 ①get character②全部输完后按Enter结束③putchar(getchar());④printf(“c%”,getchar());

#include<stdio.h>
int main()
{
char a,b;
a=getchar(); //输入转换为字符常量
b=a-32; //小写字母转大写字母
putchar(b); //常规输出1
putchar(’\n’); //换行
printf("%c",b); //常规输出2
putchar(’\n’); //换行
return 0;
}
输入:a,输出:A、A
在这里插入图片描述
在这里插入图片描述

6.4 选择结构
(1)if/else
双分支
在这里插入图片描述
(2)?/:
在这里插入图片描述
(3)switch/case
多分支
在这里插入图片描述
①表达式与常量比较,若相同则一直执行下去,直到遇到break跳出此循环
②多case共用一组语句:
case ‘A’:
case (B): printf(“>60\n”); break;

6.5 循环结构
(1)while/do,while/for
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)break/continue
改变循环状态
在这里插入图片描述

7.数组
7.1 一维数组
在这里插入图片描述
7.2 二维数组(矩阵)
在这里插入图片描述
7.3 字符数组
字符型数据以字符的ASCII码存储,属于整数形式,一般占用一个字节。
在这里插入图片描述
7.4 字符串处理函数
待输入字符数组/连接数组1/复制数组1,必须有元素个数防止过小。
在这里插入图片描述

8.函数
在这里插入图片描述
8.1 定义/声明
在这里插入图片描述
8.2调用
在这里插入图片描述
8.3 数组参数
在这里插入图片描述
8.4 局部变量/全局变量
在这里插入图片描述
为多个源文件共用外部变量,减少“外部变量声明”,可将所有“外部变量声明”集中在一个新建new.h文件中,然后调用#include<new.h>即可。

9.指针
9.1 指针变量
指针:&,地址,&x表示变量x的地址;
指针变量:存放变量x的地址(指针)的变量a,即地址变量,值为地址;
指向:*,*p表示指针变量p所指向的变量x,即x的值;
在这里插入图片描述
9.2 数组指针
在这里插入图片描述
9.3 二维数组指针
在这里插入图片描述
在这里插入图片描述
9.4 字符串指针
定义+指向首地址+引用(p1++,p1!=’\0’)
在这里插入图片描述
在这里插入图片描述
9.5 函数指针

在这里插入图片描述
在这里插入图片描述
9.6 指针型函数
在这里插入图片描述
9.7 指针型数组/指针
在这里插入图片描述

10.自定义数据类型
10.1 结构体
(1)结构体变量
在这里插入图片描述
(2)结构体数组
在这里插入图片描述
(3)结构体指针
在这里插入图片描述
10.2 链表
(1)含义
文中有的图片来自百度。
链表:头指针(结点1指针)+结点1(数据+结点2指针)+结点2(数据+结点3指针)…+表尾(空指针NULL)
头文件中存放一个地址,指向一个元素即结点,结点包含用户所需数据和下一结点地址(一般称为next)。。。最后一结点不指向其他元素。
(2)具体分析
利用结构体变量建立动态链表:
#include “stdio.h”
#include<stdlib.h>
#define Len sizeof(struct Student) //结构体长度即所占空间大小
int n;
struct Student //结构体–链表定义
{ long num; //定义结构体的数据包含学生学号、成绩
float score;
struct Student * next; }; //next是指针变量,指向下一结构体变量即结点

struct Student * creat(void) //定义函数,返回一指向链表头的指针
{ struct Student * head; //头指针
struct Student * p1,*p2; //结点1.2的地址指针
n=0;
p1=p2=(struct Student *) malloc(Len); //开辟新单元并将地址赋值p1/p2,(struct Student *) 是将malloc返回的指针转换成struct Student类型指针,也可省略不写,因为编译系统能实现隐式类型转换
scanf(“%ld,%f,&p1->num,&p1->score”); //输入第一个学生学号、成绩
head=NULL; //初始化表头
while(p1->num!=0) //如果有输入
{
n=n+1;
if(n==1) head=p1; //第一次输入则把首次开辟空间的地址给表头
else p2->next=p1; //不是第一次则把最新开辟空间地址给p2所指向的结点内指针,如结点1内的结点2指针
p2=p1; //然后将p2指针指向最新开辟空间,如结点1
p1=(struct Student *) malloc(Len); //再开辟新单元,如结点2
scanf(“%ld,%f,&p1->num,&p1->score”); //输入第2个学生学号、成绩
}
p2->next=NULL; //最后一个结点内指针应为空
return(head); //返回此链表首地址
}

int main()
{
struct Student *pt;
pt=creat(); //函数返回链表第一个节点的地址
if(pt!=NULL)
do
{printf(“%ld %f\n”,pt->num,pt->score); //输出结点数据
pt=pt->next;} //指向下一结点
while(p!=NULL);
}
10.3 共用体
在这里插入图片描述
10.4 typedef声明新类型
(1)格式
按定义变量的方式,把变量名换上新类型名,并且在最前面加上“typedef”,就声明了新类型名代表原来的类型!
①命名一个简单地类型名代替复杂的类型表达方法:
typedef struct{int num;char name[20];float score;} Data;
Data birthday; //定义结构体变量birthday
Data *p; //定义结构体指针变量p,指向此结构体类型数据
②数组:
typedef int Num[10]; //声明Num为整型数组类型名
Num a; //定义a为整形数组名,它有100个元素
③指针类型:
typedef char * String; //声明String为字符指针类型
String p,s[10]; /定义p为字符指针变量,s为字符指针数组
(2)define/typedef
#define Count int //只是简单地字符串替换
typedef int Count; //有;
(3)新头文件
当不同源文件中用到同一类型数据(尤其是想数组、指针、结构体、共用体等)时,常用typedef声明一些数据类型,可以把所有的typedef名称声明单独放在一个头文件.h中,然后再需要用到的文件中用#include指令把它们包含到文件中。
extern:为多个源文件共用外部变量,减少“外部变量声明”,可将所有“外部变量声明”集中在一个新建new.h文件中,然后调用#include<new.h>即可。

猜你喜欢

转载自blog.csdn.net/qq_38693598/article/details/85255066
今日推荐