-
C项目第四天
今天上午王老师给我们快速梳理了一下指针和链表的知识点,下午就开始帮我们梳理项目了,老师已经帮我们把大纲梳理完了,要求我们继续完善剩下内容,结果等到我们自己动手时发现还是有困难,思路清晰的很,就是写出来有困难,明天还要继续和王老师反应一下。
指针:一种数据类型,这种数据类型的变量的空间存放的是另一个空间(T类型元素)的首地址。这种类型的变量被称为指针变量,有时候也称为指针。
1.sizeof(T*) 4(平台) <=32位机的都是4;64位机是8
2.变量定义语句
double *pd;
1>给指针变量本身分配内存空间
2>给空间命名
3>定义指针指向的空间的内容
分配内存空间的两种手段:
1>静态分配:变量定义
a.普通局部变量和形参
栈区:先进后出
b.全局变量和static局部变量
数据区
2>动态分配:
堆区(malloc free)
double *p1;
double *p2;
两个指针相加p1+p2没有意义
只有同种类型的两个指针相减p1-p2有意义,得到的是两个指针中间相隔几个元素
p1+n或p1-n有意义
*
1.乘法(双目)
2.变量定义语句
int *pi;
3.间接访问运算符(单目运算符)
即通过T类型的地址访问T类型的元素
&
1.位于(双目)
2.取地址(单目):后面一定跟一个变量名(原名或别名)
3.&&逻辑与
指针最大的用途就是作为函数形参
指针作为函数返回值类型,异常返回null
数据结构:一门学科,研究如何对很多个同类型的元素做存储、管理和相关的操作的学科。
一、存储方式:
1.顺序存储
2.链式存储
二、元素间的逻辑关系
1.同属一个集合
2.线性关系(一对一的关系)(线性表:栈:先进后出,在头部插入移除 队列:先进先出,在队首移除队尾插入,队列一般不用顺序存储,一般使用链式存储)
a.顺序存储:顺序表(相当于数组)
b.链式存储:链表
3.树形关系(一对多的关系)
4.图形关系(多对多的关系)
MVC模块法:
model
viewer
controller
qsort快排函数
memcpy复制
memcpy的函数原型是void *memcpy(void *dest, const void *src, size_t n)
,其功能是从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中。memcpy则是根据其第3个参数决定复制的长度。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。
#include <string.h>
int main()
{
char *s="Golden Global View";
char d[20];
memcpy(d,s+14,4); //从第14个字符(V)开始复制, 连续复制 4个字符(View)
//memcpy(d,s+14*sizeof(char),4*sizeof(char));也可
d[4]='\0';
printf("%s",d);
getchar();
return 0;
}