zoukankan      html  css  js  c++  java
  • 指针之动态分配内存

    一、动态数组

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


  • 相关阅读:
    第六章 函数与宏定义实验
    第五章 循环结构实验
    第五章 循环结构课内反思
    第四章 分支结构实验
    C程序设计实验报告
    509寝室小组
    第九章 构造数据类型实验
    第八次实验报告
    数组实验
    函数与宏定义实验
  • 原文地址:https://www.cnblogs.com/yzy-blogs/p/6597336.html
Copyright © 2011-2022 走看看