C语言 动态一维数组
来源:互联网 发布:直播平台系统源码 编辑:程序博客网 时间:2024/05/29 15:45
#include<stdio.h>#include<stdlib.h>static void print_array(int,int*);void main(){ int length=6; int i; int *array=(int*)malloc(sizeof(int)*length);//分配length个内存空间的指针array /* int * array :定义1个int类型的指针,用来指向int类型的数组首地址。 sizeof(int):就是一个int类型的字节数:也就是4个字节, sizeof(int)*lengthgth :就是4*length个字节 malloc(sizeof(int)*lengthgth):就是分配4*length个字节内存地址空间,并返回地址空间的首地址(第一个字节的首地址) (int*)malloc(sizeof(int)*length):就是把malloc(sizeof(int)*length)返回的地址(指针),转换成int类型的指针。 (这样指针加一移动时,指针移动的步长是int类型的(也就是4个字节)) */ int* temp=array;//先保存动态数组的地址 for(i=0;i<length;i++) { array[i]=2*i;//通过下标访问动态一维数组。 } print_array(length,array); length++;//数组长度加一 array=(int*)realloc(array,sizeof(int)*length); if(array!=temp) printf("重新分配内存后动态数组的首地址变了\n"); else printf("重新分配内存后动态数组的首地址没有改变\n"); /* 1) 假如数组a 内存里接着的4个字节还没被其他对象或程序占用, 那么就直接把后面4个字节加给数组a, 数组前面7个旧的元素的值不变, 数组a的头部地址也不变. 2) 假如数组 a内存里接着的4个字节已经被占用了, 那么realloc 函数会在内存其他地方找1个连续的32byte 内存空间, 并且把数组a的7个旧元素的值搬过去, 所以数组a的7个旧元素的值也不变, 但是数组a的头部地址变化了. */ array[length-1]=7*2;//为新加的最后一个元素赋值 print_array(length,array);}static void print_array(int length,int *array){ int i; printf("array的首地址为%x\n",array); printf("数组元素:"); for(i=0;i<length;i++) { printf("%-5d",array[i]); //%-5d:表示每个数占5个字符,左对齐,不够的数用空格填充 }printf("\n");}
执行结果:
array的首地址为592aa8数组元素:0 2 4 6 8 10重新分配内存后动态数组的首地址变了array的首地址为590f00数组元素:0 2 4 6 8 10 14
阅读全文
0 0
- C语言声明一维动态数组
- C语言 动态一维数组
- C语言实现动态一维/二维数组的申请
- 一维/二维动态数组分配(C语言)
- 一维动态数组的实现(c语言)
- C 语言设计模式(一) 动态数组
- C语言一维数组
- C语言 一维数组
- 【C语言】一维数组
- C动态一维数组,二维数组
- C语言动态数组
- c语言 动态数组
- C语言动态数组
- C语言动态数组
- C语言动态数组
- C语言动态数组
- C语言动态数组
- c语言动态数组
- 【20171003】python_语言设计(5)字典
- HDU 2780 Su-Su-Sudoku(数独用DLX精确覆盖求解)
- Linux常用命令总结
- linux下编译安装boost库
- 使用python统计csdn博客一段时间内的访问量
- C语言 动态一维数组
- Image Processing——图像处理教程(二)之MATLAB基础
- Physics Simulation
- Scala(4)-通过mixin实现类合成
- Intellij IDEA 启动项目ClassNotFoundException
- CSS垂直居中的11种实现方式
- JavaWeb-Servlet
- 在 publicId 和 systemId 之间需要有空格 关于spring xml schema
- Python学习笔记(一)—Python的简介和环境安装