Day 42 知识点,teacher

博客介绍了信息技术中的数据结构和软件编程基础。数据结构方面,涵盖数组、指针、结构体、共用体和枚举的定义及特点;软件编程部分涉及IO、进程/线程、网络编程,还介绍了标准IO的文件打开和读写操作。

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

数组:
一维数组:
1.定义:
存储类型 数据类型 数组名[元素个数];

		存储类型:
		(默认)	auto:局部变量、自动型变量
				register:寄存器变量
				extern:声明一个外部变量
				static:静态变量
		数据类型:
			基本数据类型
				1.整数类型
				2.浮点数类型
				3.缺省类型
				4.泊尔类型(逻辑类型)
			构造数据类型
				1.结构体
				2.共用体
				3.枚举
		数组名:
			1.可以由字母、数字、下划线构成,不能
			  以数字开头
			2.不能与C语言关键字重名
			3.最好不要与C语言库函数重名
		元素个数:
			必须为常量
	2.数组的初始化:
		1.全部初始化
			int a[5] = {1, 2, 3, 4, 5};
		2.局部初始化
			int a[5] = {1, 2, 3};
		3.默认初始化
			int a[] = {1, 2, 3, 4, 5};
		sizeof(a) / sizeof(a[0])
	3.数组存储
		数组空间必须连续
		
	4.数组容易出错的地方:
		1.数组定义元素个数必须为常量
		2.数组元素不要溢出
		3.数组不能整体操作
			一维数组用单层for循环操作
			二维数组用双层for循环操作
			
	5.字符型数组:	
		存储字符串必须用字符数组
	
	6.字符串操作函数:
		strlen:获得字符串长度
		size_t strlen(const char *s);
		常用作统计字符长度
		
		strcpy:字符串拷贝
		char *strcpy(char *dest, const char *src);
		常用作对字符串赋值操作
		
		strcat:字符串拼接
		char *strcat(char *dest, const char *src);
		
		strcmp:字符串比较
		int strcmp(const char *s1, const char *s2);
		
		strncpy:拷贝源开始的n个字符到目的空间中
		char *strncpy(char *dest, const char *src, size_t n);
		
		strncat
		strncmp
		
		memcpy:内存空间拷贝
		memcmp:内存比较
		
		strstr:在一个字符串中查找另一个子字符串出现位置
		strtok:字符串分割函数
		
		printf:格式转化
		int n = 100;
		
		sprintf
		sscanf
重点:
	1.一维数组的排序
	2.字符串常用操作
	
二维数组:
	整形二维数组
	二维字符型数组
		可以存放字符串数组
		"hello"
		"world"
		"how"
		"are"
		"you"

指针:
1.指针基本含义
地址:用来区分内存中不同字节的编号
指针:指针具有指向的概念,地址就是指针,指针就是地址
指针变量:存放地址的变量

	指针算术运算:
		&:取变量在内存空间中存放位置的首地址
		*:左值:对指针指向空间赋值
		  右值:取指针对应空间中的值
	
	int *p;			0x2000
	char *p;		0x2000
	double *p;		0x2000
	
	指针数组:
		int *a[5];
		定义一个数组,数组名为a,数组有5个元素,占
		20个字节空间,每一个元素都是指向一个int
		类型的指针
	数组指针:
		int (*p)[5];
		定义一个指针变量p,指针占4个字节空间,指针
		指向20个字节空间
	指针函数:
		char *strcpy(char *dst, char *src);
		返回值为指针的函数
	函数指针:
		char *(*p)(char *dst, char *src);
		定义一个指针变量p,占4个字节存储空间,指针具有指向的概念
		是指向返回值为char *并且有两个char *型
		参数的函数指针

2.指针数组和数组指针
	存储使用数组,操作使用指针
	指针和一维数组关系:
		int a[5] = {1, 2, 3, 4, 5};
		数组的数组名a,是指向数组第一个元素首地址的
		指针 
		a == &a[0]
		a:可以理解为int *型,除以下两种情况
			1.sizeof(int *) :4
			  sizeof(a)     :20
		  
			2.&int *     int **
			  &a         int (*)[5]
	
		指针和二维数组关系:
			int a[2][3] = {1, 2, 3, 4, 5, 6};
			二维数组的数组名是指向数组第一行所有
			元素的一个数组指针
		二维数组元素的访问方式:
			int a[2][3] = {1, 2, 3, 4, 5, 6};
			int *p = &a[0][0];
			int *p = a[0];
			int *p = *a;
			int (*q)[3] = a;
			
			访问第m行第n列
			a[m][n]
			*(a[m]+n)
			*(*(a+m)+n)
			*(p+m*N+n)
			*(*(q+m)+n)
			*(q[m]+n)
			q[m][n]
	数组本质:

结构体:
1.struct 结构体名称
{
数据类型1 成员变量1;
数据类型2 成员变量2;
数据类型3 成员变量3;

};
2.成员变量的访问:
struct student
{
char name[32];
char sex;
int age;
int score;
};

	结构体变量访问成员变量:
		struct student s;
		
		s.name 			char *		
		s.sex			char 
		s.age			int 
		s.score			int 
		
		(&s)->name		char *
		(&s)->sex		char 
		(&s)->age		int 
		(&s)->score		int 
		
	结构体指针访问成员变量:
		struct student *p = &s;
		
		p->name			char *
		p->sex			char 
		p->age			int 
		p->score		int 
	
		(*p).name		char *
		(*p).sex		char 
		(*p).age		int 
		(*p).score 		int 

3.结构体存储
	内存对齐 
	struct s 
	{
		char a;
		short b;
		int c;
	};
	
	1.结构体成员变量只能存放在内存地址为自身基本
	  类型长度整数倍的内存单元中
	2.结构体成员变量的大小必须是自身最大类型长度
	  的整数倍
	
4.结构体传参

共用体
所有成员变量共享同一个空间
可以用来测试内存大小端
小端:内存低地址存放低数据位
大端:内存低地址存放高数据位

枚举
enum status
{
free, 0
play, 1
pause, 2
};
enum status s1;

====================================================
软件编程:
IO
进程/线程
网络编程

IO
标准IO
文件IO

文件类型
b:块设备文件			文件IO
c:字符设备文件			文件IO 
d:目录文件				目录IO
-:普通文件				文件IO/标准IO
l:链接文件				链接IO
s:套接字文件			文件IO 
p:管道文件				文件IO

标准IO
1.打开文件 fopen
2.读写文件 fgetc/fputc ASCII码文件
fgets/fputs
fscanf/fprintf

			fread/fwrite		二进制文件
3.关闭文件	fclose

普通文件:
	1.ASCII码文件(特殊二进制文件)
		文本文件
	2.二进制文件
		图片、压缩文件、音视频文件
	
	2019
	'2''0''1''9'
	
	11111100011

文件拷贝
	fread/fwrite 
	返回值为对象数
	
	read/write  
	返回值为读到的字节数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值