fly12358

班级

TA还未加入任何班级

课程

1万+浏览/ 148学员/ 5评分
荆棘
免费
1万+浏览/ 418学员/ 3.8评分
Cross
免费
6万+浏览/ 729学员/ 4.3评分
Songn
免费
1万+浏览/ 174学员/ 3评分
4万+浏览/ 1547学员/ 4.8评分

笔记

来自线性表(2)

数据结构:①按逻辑结构分类②按存储结构分类;①按逻辑结构分类:1.集合(无逻辑关系)2.线性结构(线性表)——【一维数组、 队列、 栈】;3.非线性结构——树、图、多维数组②按存储结构分类:1.顺序存储结构2.链式存储结构3.索引存储结构4.散列存储结构;——————————————————线性表:顺序表和链表;(按存储结构划分的;)顺序表:内存是按顺序排列下来;链表:内存中有节点,通过一个指针链接起来;            链表又分为:单链表(单向的 最后一个节点的指针域为空)循环链表(和循环链表相似,只是它的最后一个节点的指针域指向第一个头结点);双链表(数据的前后都有指针域,然后两边都链接起来,所以成为双链表);双链表能向前后两个方向移动,而单链表只能向一方移动;链表的操作:节点的删除(前边的跳过要删除的节点,就会删除该节点,删除的节点还需要释放;);;节点的插入(将指针域指向新加节点新加的节点指针域指向后边的指针域);   

来自千锋3G学院-C语言基础视频教程-第04讲-数组(2)(0)

数组完全初始化:a[3]={1,2,3}没有被初始化的变量元素为零;数组部分初始化:a[10]={1,2,3}; int a[5]; 其中a是数组,不能说a[5]是数组;可以说,a是int 5类型的数组;数组不能整体赋值;int a[5];a[0]=1,a[1]=2;//这样写对int b[5];b=a;//这样写是错的,数组不能整体赋值;a[4],内存中是这样存储的:a[0]占4位地址,a[1]占4位地址,a[2]占4位地址,a[3]占4位地址!!!当我们访问数组某个元素的时候,内存会自动找到相应的4位,如果要打印,会把首位地址打印出来;首位地址代表该元素的地址;

来自千锋3G学院-C语言基础视频教程-第05讲-指针(1)(0)

指针(pointer)是变量;int *p;p代表指针变量名;在64位系统下占8个字节;指针是用来装地址的;int a;int *p=&a;&是取地址符;把a的地址放到p里面;*p代表a; *代表地址的取值符;内存中的地址是以十六进制写的;这只是地址的编号,实际上要加地址偏移量;十六进制编号是为了方便阅读和编写;地址是常量,指针是变量;只有变量有地址; 常量不是空间,所以没有地址; 

来自千锋3G学院-C语言基础视频教程-第05讲-指针(2)(0)

指针通常和数组一起使用;//单独的数组名,如a相当于第一个元素的地址,即&a[0];数组名是数组的首元素地址。指针变量+1,其结果相当于加1个其指向的字节数;int *p=(int *)5;p++;最后p==9;//int类型占4个字节;char *q=(char *)5;q++;p==6;  int a[10]={};int *p = a;int i;for(i=0;i<10;i++){scanf("%d",a[i]);//这里的a[i]可以换成p+i;因为p+1的地址就是a[1]的地址...    换成p+i,只是把每个元素的地址取出来,如果要取元素,就要写成*(p+i);}return 0;每次都用*(p+i);取值!特别麻烦,这时人们就就发明了一个代替+i取* 的运算符;就是中括号运算符;*(p+3)=0;代表p[3]=0;*(p+n)==p[n]; 数组中也一样适用:a[3]=9;     相当于*[&(a[0])+3]=9;即*(p+3)=9; int main(){int a[4]={1,3,4,5};printf("%d",a[3]);printf("%d",3[a]);//两者相等;因为中括号运算符;//a[3]==*(a+3);//3[a]==*(3+a);}指针是地址变量;数组名是地址常量;它就代表着a[0]的地址,这也就解释了,数组为什么不能整体赋值;int main(){int a[10]={1,2,3,4,5};int *p=a;a[1]=2;*(a+1)=2;*(p+1)=2;p[1]=2;}上边四个式子都一样,因为 方括号运算符本身就是+i取*    

留言

功能维护升级中,维护完成完后将再次开放,非常抱歉给您学习造成的不便。