您的位置:首页 > 数码常识数码常识
c语言malloc函数用法示例(c语言指针malloc使用格式)
2025-05-13人已围观
c语言malloc函数用法示例(c语言指针malloc使用格式)
malloc就是memory allocate动态分配内存,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,今天我们就来学习下malloc这个函数吧:
c语言指针malloc使用格式
我们来了解下malloc函数的使用:
首先,包含malloc的头文件:
#include <stdlib.h>或者#include <malloc.h>
然后,我们需要了解一下几点:
malloc函数只接受一个形参如,int *p=(int *)malloc(sizeof(int)).先来解释下这句话的含义,int* p代表一个以int类型地址为内容的指针变量,p这个变量占4个字节(某些计算机),这个p变量是静态分配的一个变量。在某些计算机的前提下,指针变量所占的大小都是一样的,无论是char* 还是long *,因为,这些指针变量里面存放的是一个8位16进制的地址,所以占四个字节,当然这些都是在某些计算机的前提下,并不是所有的都是这样的。
malloc函数会返回开辟空间的首地址,加(int *)的目的是让计算机知道,如何去划分这个开辟的空间,因为char、int 、long这些类型的字节大小是不一样的,我们知道了首地址,还要知道是以几个字节为单元。所以,这句话一共开辟了8个字节(某些计算机上),这也是为什么写sizeof(int),而不是直接写4的原因。
malloc开辟空间所返回的首地址是动态分配的。
下面我们通过一个例子来具体了解一下:
# include <stdio.h># include <malloc.h>int main(void){ int i=5; //分配了4个字节 静态分配 int * p=(int *)malloc(sizeof(4));//指针变量p为静态分配,malloc开辟的空间为动态分配 *p=5; //*p 代表的就是一个int变量,指针变量p表示是一个以int类型的地址为内容的变量 printf("%d",*p); free(p); //freep(p)表示把p所指向的内存给释放掉,p本身的内存是静态的,不能由程序员手动释放 //p本身的内存只能在p变量所在的函数运行终止时由系统自动释放 return 0;}
# include <stdio.h># include <malloc.h>void f(int * q){*q=200;//free(q); //把q所指向的内存释放掉,不然后面在使用*p的时候会报错,因为p所指向的内容已经被释放了}int main(void){int * p=(int *)malloc(sizeof(int)); //sizeof(int)返回值是int所占的字节数*p=10;f(p); //p是int *类型printf("%dn", *p);return 0;}
有什么问题欢迎留言讨论哦。
滴水能把石穿透,万事功到自然成。
上面就是小居数码小编今天给大家介绍的关于(c语言指针malloc使用格式)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
软件系统设计中的概要设计示例(应用系统设计是啥)
c语言里面void和main(main函数前为什么有void)
热门的应用程序开发编程语言盘点(应用程序开发编程语言有哪些)
会c语言学java难吗(c语言与java难度)
155249
malloc就是memory allocate动态分配内存,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,今天我们就来学习下malloc这个函数吧:
c语言指针malloc使用格式
我们来了解下malloc函数的使用:
首先,包含malloc的头文件:
#include <stdlib.h>或者#include <malloc.h>
然后,我们需要了解一下几点:
malloc函数只接受一个形参如,int *p=(int *)malloc(sizeof(int)).先来解释下这句话的含义,int* p代表一个以int类型地址为内容的指针变量,p这个变量占4个字节(某些计算机),这个p变量是静态分配的一个变量。在某些计算机的前提下,指针变量所占的大小都是一样的,无论是char* 还是long *,因为,这些指针变量里面存放的是一个8位16进制的地址,所以占四个字节,当然这些都是在某些计算机的前提下,并不是所有的都是这样的。
malloc函数会返回开辟空间的首地址,加(int *)的目的是让计算机知道,如何去划分这个开辟的空间,因为char、int 、long这些类型的字节大小是不一样的,我们知道了首地址,还要知道是以几个字节为单元。所以,这句话一共开辟了8个字节(某些计算机上),这也是为什么写sizeof(int),而不是直接写4的原因。
malloc开辟空间所返回的首地址是动态分配的。
下面我们通过一个例子来具体了解一下:
# include <stdio.h># include <malloc.h>int main(void){ int i=5; //分配了4个字节 静态分配 int * p=(int *)malloc(sizeof(4));//指针变量p为静态分配,malloc开辟的空间为动态分配 *p=5; //*p 代表的就是一个int变量,指针变量p表示是一个以int类型的地址为内容的变量 printf("%d",*p); free(p); //freep(p)表示把p所指向的内存给释放掉,p本身的内存是静态的,不能由程序员手动释放 //p本身的内存只能在p变量所在的函数运行终止时由系统自动释放 return 0;}
# include <stdio.h># include <malloc.h>void f(int * q){*q=200;//free(q); //把q所指向的内存释放掉,不然后面在使用*p的时候会报错,因为p所指向的内容已经被释放了}int main(void){int * p=(int *)malloc(sizeof(int)); //sizeof(int)返回值是int所占的字节数*p=10;f(p); //p是int *类型printf("%dn", *p);return 0;}
有什么问题欢迎留言讨论哦。
滴水能把石穿透,万事功到自然成。
上面就是小居数码小编今天给大家介绍的关于(c语言指针malloc使用格式)的全部内容,希望可以帮助到你,想了解更多关于数码知识的问题,欢迎关注我们,并收藏,转发,分享。
94%的朋友还想知道的:
软件系统设计中的概要设计示例(应用系统设计是啥)
c语言里面void和main(main函数前为什么有void)
热门的应用程序开发编程语言盘点(应用程序开发编程语言有哪些)
会c语言学java难吗(c语言与java难度)
155249
很赞哦! ()
上一篇:2023年上半年上市的手机(2023年上半年7款新机)
下一篇:返回列表