指针之动态分配内存

来源:互联网 发布:人工智能概念龙头股 编辑:程序博客网 时间:2024/05/20 10:13

一、动态数组

/*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;}


0 0
原创粉丝点击