C语言——动态一维数组的构造

动态一维数组的构造

这个简单的程序可以很好地帮助理解指针的知识和动态内存分配的知识。

源代码

# include <stdio.h>
# include <malloc.h>

int main(void)
{
	int len; //要构造一个数组,首先需要定义好数组的长度;
//	int * pArr; //接着这里可以理解为是定义数组名 ;   a[5]; 其中a这个数组名就是存放的数组第一个元素的地址。这里同理。
	int i;

	printf("输入你要定义数组的长度:");
	scanf("%d", &len);
	int * pArr = (int *)malloc(sizeof(int) * len);//12行;这里不能只写一个len,len是数组的长度,但数组所占字节,应该乘上相应的数据类型,例如这里是int类型,就是sizeof(int) * len 

	//对数组进行赋值
	for (i=0; i<len; i++)
	{
		printf("输入第%d个元素:",i);
		scanf("%d", &pArr[i]);
	}

	//操作数组:显示输出
	printf("你构造的数组如下:\n");
	for (i=0; i<len; i++)
		printf("%d\n", pArr[i]);

	free(pArr); //手动释放内存;

	return 0;
}

在vc++6.0环境下运行结果如下

输入你要定义数组的长度:
5
输入第0个元素:1
输入第1个元素:55
输入第2个元素:-6
输入第3个元素:326
输入第4个元素:55
你构造的数组如下:
1
55
-6
326
55 

总结

	int * pArr;
pArr = (int *)malloc(sizeof(int) * len);

上面这两句等价于下面这句

int * pArr = (int *)malloc(sizeof(int) * len);

效果如同:

     int a;
	 a = 5;
	 等价于
	 int a = 5;

int *是一个整体,int * p代表定义了,
一个只能存放整形数据类型地址 的指针变量,变量名为p
2.
第12行用 sizeof(int) * len;作为malloc的实参,
而不用4 * len是因为这样程序移植性更强(不同环境下int类型所占字节数不一定都是4个字节)
3.
第12行如果实参写错,例如只写了一个len(数组长度),忘记乘上对应字节数,
在语法上没错误,但是在程序运行时会出错,因为出现了越界。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值