13、C语言中动态内存分配与指向它的指针变量
来源:互联网 发布:mac在美国多少钱一支 编辑:程序博客网 时间:2024/04/30 10:28
#include <stdio.h>#include <stdlib.h>int main(){ //1、动态分配内存函数 char *p;//p的值是一个随机值(有可能已经被系统占用)。有可能会产生内存冲突。 //malloc默认返回 void *,需要强制转换。 p=(char *)malloc(sizeof(char));//在内存动态分配区分配一个sizeof(char)字节的连续空间,并将首地址赋予p。 *p='A'; printf("p=%d,*p=%c\n",p,*p); //calloc 动态分配n个长度为size的字节数的连续空间,并将首地址返回 //void * calloc(n,size)//可以为一维数组分配动态存储空间 int *p1=NULL;//空指针。一般大多数系统都保证0位置不保存任何对象或者函数。这样操作*p1就不会对程序产生影响 int i=0; p1=(int *)calloc(10,sizeof(int)); for(i=0;i<10;i++) { p1[i]=i; (*(p1+i))++; } printf("p1=%d\n",p1); for(i=0;i<10;i++) { printf("p1[%d]=%d\n",i,p1[i]); } //2、为已经用使用malloc 或者 calloc分配过连续内存空间的指针变量重新调整大小 指针变量的值不变 //void * realloc(*p,size); printf("为p1重新分配内存:\n"); p1=realloc(p1,sizeof(int)); *p1=20; printf("p1=%d,*p1=%d\n",p1,*p1); //3、释放指针变量p所指向的动态空间.但是指针变量本身所占用的内存并不释放。p必须为最近一次有调用过calloc malloc realloc等分配的。 free(p); free(p1); printf("释放内存空间\n",p,p1); //p p1 的指向暂时不会改变。也可以引用这段内存,但有可能会出现内存泄漏等。所以一般需要加上 printf("p=%d,p1=%d\n",p,p1); p=NULL; p1=NULL;//消除不明(在以后程序使用这段内存的与否)指向。 printf("声明为空指针\n",p,p1); printf("p=%d,p1=%d\n",p,p1); return 0;}
程序运行结果:
p=7482152,*p=A
p1=7474944
p1[0]=1
p1[1]=2
p1[2]=3
p1[3]=4
p1[4]=5
p1[5]=6
p1[6]=7
p1[7]=8
p1[8]=9
p1[9]=10
为p1重新分配内存:
p1=7474944,*p1=20
释放内存空间
p=7482152,p1=7474944
声明为空指针
p=0,p1=0
Process returned 0 (0x0) execution time : 0.160 s
Press any key to continue.
- 13、C语言中动态内存分配与指向它的指针变量
- 动态内存分配与指向它的指针变量
- c语言解析系列(7)文件和动态内存分配和指向它的指针变量
- C/C++中结构体变量及指向结构体指针变量的内存分配问题
- c语言指针与动态内存分配
- 4、C语言中 指向指针变量的指针变量
- 黑马程序员--C语言指针与动态内存分配
- C语言 free 指针 变量内存分配
- 动态分配内存和指向它的指针变量
- 使用指向指针的指针进行动态内存分配
- C语言 指针及动态内存分配
- c语言指针--动态内存分配
- C语言-函数指针+动态内存分配
- 指向指针的指针的内存分配与释放
- C-动态内存分配与野指针
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- C语言定义了一个结构体怎么分配内存?C\C++中结构体变量与结构体指针内存分配问题?
- C语言变量与内存分配
- 深入理解Oracle索引(18):函数索引的陷阱以及如何避免索引被污染
- 11、C语言中字符数组和指针字符串的指针变量
- 轻松去除Windows 7快捷方式箭头
- 12、C语言。指向(只有一个字符的字符串、字符变量、一个字符)的指针变量的相同与区别
- MongoDB008 查询(一)
- 13、C语言中动态内存分配与指向它的指针变量
- Windows7激活信息备份方法 源于Vista的方法
- 14-1
- UVa 10391 - Compound Words 字符串hash
- 14、C语言中的空类型指针
- 15、C语言用户自定义数据类型
- 16、C语言指针小结
- cocos2d-x中实现区域裁剪
- 17、C语言文件及文件操作