zoukankan      html  css  js  c++  java
  • C语言内存分配时间 分类: H_HISTORY 20130211 10:51 1432人阅读 评论(3) 收藏

    1、变量在声明时即分配内存,此时将根据变量的内存分配内存大小,如int类型4字节,float类型4字节,double类型8字节。如下例中的a.

    2、但对于数组,有以下几种情况(以int类型为例):

    (1)声明数组时即指定数组大小N,则此时可按N*sizeof(int)的大小分配内存。如下例中的c。

    (2)声明数组时虽然未指明大小,但声明的同时也对数组进行了初始化,则按初始化时的元素数量N*sizeof(int)来分配内存。如下例中的d。

    (3)声明数组的时候未指明大小,同时也未进行初始化。此类情况一般出现在函数的形式参数中,程序运行时,先为arr[]分配了内存,由于此时未知arr中元素的多少,因此只分配了1*sizeof(int),然后再把实参赋值到形参。如size_count函数。因此,没有办法在被调用函数中计算实参的大小,而必须在以一个单独的实参N把元素的数量传递到被调用函数之中。 

    如:

    arr_length=(sizeof(arr)/sizeof(arr[0]));
    size_count(arr, arr_length);

    示例程序:

    #include <stdio.h>
    
    int main(void){
    	int a;
    	printf("%d\n",sizeof(a));//4
    
    	/*int b[];
    	printf("%d\n",sizeof(b));*/  //compile error: array size missing in 'b'.
    
    	int c[10];
    	printf("%d\n",sizeof(c));//40
    
    	int d[]={0,1,2,3,4,5,6,7,8,9};
    	printf("%d\n",sizeof(c));//40
    
    	printf("%d\t%d\n", size_count(c), size_count(d));//4	4
    	printf("%d\t%d\t%d", sizeof(int), sizeof(float), sizeof(double));//4	4	8
    	return 0;
    }
    
    int size_count(int arr[]){
    	return sizeof(arr);
    }


    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    java中过滤器和拦截器的区别
    Java中内部类和静态内部类的区别
    SpringBoot启动的时候切换配置文件命令
    centos7安装Subversion
    关于curl_setopt参数的记录
    Linux Samba文件共享服务,安装与案例配置
    CentOS7源码安装Redis5.0.4非关系型数据库
    Centos7部署LAMP平台之架构之路
    Centos7安装及配置DHCP服务
    CentOS 7源码安装MYSQL-5.6
  • 原文地址:https://www.cnblogs.com/lujinhong2/p/4637428.html
Copyright © 2011-2022 走看看