动态内存分配与指向它的指针变量

什么是内存的动态分配?
全局变量是分配在内存中的静态存储区的,非静态的局部变量(包括形参)是分配在内存中的动态存储区的,这个存储区是一个称为栈(stack)的区域。

C语言还允许建立内存动态分配区域,以存放一些临时用的数据,需要时随时开辟,不需要时随时释放。这些数据是临时存放在一个特别的自由存储区,称为堆(heap)区。只能通过指针来引用。
在这里插入图片描述
int *pt;
pt=(int *)malloc(100); //malloc(100)是void *型,把它转换为int *型

注意:不要把“指向void类型”理解为能指向“任何的类型”的数据,而应理解为“指向空类型”或“不指向确定的类型”的数据。<\font>

sizeof:
是一个运算符,给出某个类型或变量在内存中所占据的字节数

#include <stdio.h>
int main()
{
	int a;
	a=6;
	printf("sizeof=%d",sizeof(double));
	printf("\nsizeof=%d",sizeof(a));
}
#include <stdio.h>
#include <stdlib.h>    //程序中用了molloc函数,应包含stdib.h 
int main()
{
	void check(int *);//函数声明 
	int *p1,i;        //p1是int型指针,只保存地址和类型 
	p1=(int *)malloc(5*sizeof(int));//开辟动态内存区,将地址转换成int*型,然后放在p1中
	//p1得到了int*型地址 
	for(i=0;i<5;i++)
		scanf("%d",p1+i);//输入5个学生的成绩 
	check(p1);
	return 0;
	
		
}
void check(int *p)       //定义check函数,形参是int*指针 
{
	int i;
	printf("They are fail:");
	for(i=0;i<5;i++)
		if(p[i]<60) printf("%d ",p[i]);//输出不合格的成绩 
	printf("\n");
}
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值