一、动态数组
/*
2016年9月4日21:08:23
动态数组
*/
#include<stdio.h>
#include<malloc.h>
int main(void)
{
int a[5]; //静态数组
int len;
int i;
printf("请输入动态数组的长度:");
scanf("%d", &len);
int * pArr = (int *)malloc(sizeof(int) * len); //动态数组
//输入数组的值
printf("请输入动态数组的值:\n");
for(i = 0; i < len; ++i)
{
scanf("%d", &pArr[i]);
}
//输出数组的值
for(i = 0; i < len; ++i)
{
printf("%d\n", pArr[i]);
}
return 0;
}
二、跨函数使用内存
/*
2016年9月4日22:15:39
跨函数使用内存
*/
#include <stdio.h>
#include <malloc.h>
void f(int ** q)
{
*q = (int *)malloc(sizeof(int));
**q = 5;
}
int main(void)
{
int * p;
f(&p);
printf("%d\n", *p);
return 0;
}
注意下面下面的写法是错误的:
#include<stdio.h>
#include<malloc.h>
void f(int * q)
{
q = (int *)malloc( sizeof(int) ); //虽然q指向的一块动态内存,但q是形参,但f函数运行结束后q就没了,所以不能修改p的值
*q = 4;
}
int main(void)
{
int * p;
f(p); //要想修改p的值只能发送p的地址
printf("%d\n",*p);
return 0;
}