什么叫网站策划书,自己想注册公司怎么搞,wordpress导出乱码,广州网站维护一、动态内存分配基本步骤 1、内存分配简单示例#xff1a;
个人对于示例的理解#xff1a; 定义一个整型的指针变量p#xff08;着重认为它是一个“变量”我觉得可能会更好理解#xff09;#xff0c;这个变量用来存地址的#xff0c;而不是“值”#xff0c;malloc函…一、动态内存分配基本步骤 1、内存分配简单示例
个人对于示例的理解 定义一个整型的指针变量p着重认为它是一个“变量”我觉得可能会更好理解这个变量用来存地址的而不是“值”malloc函数参数给空间字节数图中就是四个字节32位这个函数返回值是那片数据类型的一个指针你用强制转换int*)之后那片数据类型的一个指针就是整数类型。15赋值给变量*p打印变量值释放内存将地址p传过去。 可以看到p指向了那片空间的地址*p变量存在101地址它的值是15根据地址15被指向了那片空间的地址500这样值就存在了500地址那里。 实际测试也可以发现变量*p的值是16p地址被存在一个地方但是其指向那一片开辟出来的空间的地址那一片地址就放着变量的值所以第二行地址跟第四行的地址是一样的。 2、结构体的内存分配 首先理解一下结构体。typedef 给数据类型换个别名。本身结构体应该是
typedef struct 结构体名字
{
}
别名
这样来定义的不过都有别名了为了简便可以省去结构体名字。
然后第二个知识点malloc分配了多少个字节换成char x;int y;呢答案都是八个字节因为c语言有补位原理要遵循附讲解。
第三个、p-元素是c语言为了简便的又一种写法跟(*p).元素是一样的附有实际测试图。
第四、类比上面那个示例这里就是malloc开辟了一片8个字节的空间数据类型是po这个结构体类型地址则被赋值给p由p指向这片空间(附实际测试图)。可以看到其实就是指向第一个元素的地址。然后8到C刚好是12-84个字节说明char x的大小也补成了4个字节。 二、绪论概念性的无聊
1、 程序 算法 数据结构算法的五个重要特性有穷性确定性可行性输入输出。
2、f(n)是什么 3、常量阶 f(n)计算出来是常量那都是O(1)不管常量有多大算法的时间复杂度都是O(1)。 4、线性阶 5、平方阶 后面的例题我感觉都挺难的应该不会出。我们有个阶的概念就行。重点是理解上面的动态内存分配。
三、线性表顺序表和链式表
1、一些基本概念 2、顺序表 初步理解顺序表 几点说明将int重命名为ElemType很有必要方便以后统一修改数据类型。
以后的函数我感觉习惯上都要有返回值来验证有没有正确执行。
只是单纯定义了一个变量list而不是*list指针变量但是函数都是要接收指针所以传参的时候都是取地址。
#include stdio.h
#include stdlib.h
#include string.h#define MAXSIZE 100typedef int ElemType;typedef struct
{ElemType data[MAXSIZE];int length;
}Seglist;void initlist(Seglist* L)//初始化长度
{L-length 0;
}int appendElem(Seglist* L, ElemType e)//在尾部添加一个元素
{if (L-length MAXSIZE){printf(顺序表满了\n);return 0;}L-data[L-length] e;L-length;return 1;
}int listElem(Seglist* L)//遍历元素
{int i 0;for (i 0; i L-length; i){printf(%d , L-data[i]);}return 1;
}int main(void)
{Seglist list;initlist(list);printf(初始化成功目前使用长度为%d\n, list.length);printf(目前占用内存%d\n, sizeof(list.data));appendElem(list, 88);appendElem(list, 16);appendElem(list, 57);appendElem(list, 15);listElem(list);return 0;
}