数据结构

**

数据结构预备知识

**
1.伪算法实现+语言实现(必须含有指针)=难度大的=优秀
2.C里指针学的不够
3.要学的知识:
预备知识: 指针 结构体 动态内存的分配和释放
32位 只能控制 2~32 次方的单元 内存的编号不能重复

指针:
指针的重要性:
指针是C语言的灵魂;
定义 :
地址 : 内存的单元编号 从0开始的非负整数
地址就是内存单元的编号
指针就是地址 地址就是指针
指针变量就是存放内存单元地址的变量 指针变量就是 存放内存单元地址的变量 指针变量就是 存放内存单元地址的编号 就是存放地址的变量 是存放内存单元地址的变量是存放 内存单元地址的变量
指针变量就是 存放内存单元地址的变量 指针变量
指针变量是储存内存单元地址的变量 指针变量管啥用? 存放内存单元的地址 故:
指针变量是存放内存单元地址的变量
何为指针变量??? 指针变量和就是 p 这就是 指针变量。他存放的是不是普通数字而是 地址 他存的是地址 他存的是 地址
指针的本质:
是一个操作受限的非负整数
他把一个地址放到了内存空间中 ,他放的不是一个简单的变量值 而是一个地址
当然了 指针自己也有自己的内存空间 ,在创建定义时便产生了 。奇怪的魔法 。它的使用方式就是利用地址 因此需要用到 取地址符 p=&a但是 此时输出 p,p仅仅是作为一个普通变量会把a的地址输出出去 。要想输出去 a的数值 那必须使用 *p;故和下文的 p 是一个变量名字 ,int**是 指针变量 就相当于p知道了a的值。但是经过测试 发现 若直接输出

1.基本类型指针
2. 指针和数组的关系

Cpu与 内存之间 地址线 CPU不知道 地址 咋么去内存里找东西
控制线 读 ? 写? 读写?
数据线: 传输结论
#include<stdio.h>
int main (void)
{intp;// P是一个指针变量 p是个变量名字 ,INT 表示该变量只能储存INT类型变量的地址 不能 p=10;定义 因为 p已经被规定这是int 类型指针变量 他只能存放地址而不能存放整数 也就是说他的使用 必须用其他变量。即p指向了那一个值比如 p指向了I 但p不是I,I不是p 如果p指向I那么p就代表了l,不能说P是I的地址或I的值,他就是I本身 即I是什么 *p就是设么,可以在任何地方进行互换。总之 *p等价于I,,I的值改变了 *p的值也就变了也可证明 p此时也就是一个常规数字也与下方I与p等价互相照应
p的用法就是 与取地址符挂钩 p=&I;
牵扯到两个关系 p与p
p指向I 但 *p等价于I因为p是一个变量 而且是一个 整形的指针变量 int

即:一共三句话 p保存I的地址,p指向I
第2句话 修改P的值不影响I 的值 修改I的值不影响P的值
int i = 10 ;
第三句话 *p代表了I,因为P指向I 即即即 *p与指向的变量是 等价关系
int j ;
若仅定义 int *p; 意思是p可以保存地址但还未保存
**例:
*int p;
int j;
j=p;//可以看出p并没有指向谁 但是p可能会是垃圾数字且这个垃圾数字也有可能是一个变量地址也就是会产生j等于一个值

j = *p;
printf("%d\n",j);
return 0;
}
程序运行完毕 终止了 存的变量比如 int a;便被回收了 但也和语言也有关系有的语言可能不会自动释放 回收释放指的是控制权限并不是内存中的内容 ,内容可能不会消失>>>垃圾数字的由来 回收和销毁不是一个概念
关于此老师 的语气 可更新的一点是 和学生逻辑照在了一个层面 显得小孩???
内存的基本划分单位为字节
模块一:线性结构
连续存储[数组]

你想变成高手 咋么 能不学数据结构
关于函数部分:
函数内部定义的i和主函数的i冲突吗? 完美解释以下知识,不冲突函数内部的仅仅是起的一个名字
不冲突 在函数内部i是局部变量 形参也属于局部变量
局部变量只在函数内部使用
相当于 &i发送到函数中 int形指针变量i等于了&i 也就是 i指向了&i 也就是*i=i(此i为主函数内部的i)的值了
虽然之前定义了i=9但是下面执行函数 函数内:p=i 他们完全等价
逻辑关系如下: 因为 主函数内要执行的变量&i转移到函数内 p指向了i的地址
p就是与i完全等价。故输出了i=100
而第一个如何理解?
形参在函数内部不参与建设而 人家本身在主函数内就已经定义了一个值。理解成还是主函数内的做主吧 !!!
首先即使 变量名字一样但不冲突
数据结构

数据结构数据结构

数据结构数据结构

数据结构数据结构