一、动态数组
/* 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("请输入动态数组的值: "); for(i = 0; i < len; ++i) { scanf("%d", &pArr[i]); } //输出数组的值 for(i = 0; i < len; ++i) { printf("%d ", 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 ", *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 ",*p); return 0; }