C语言内存分配时间
2013-02-11 10:51
330 查看
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把元素的数量传递到被调用函数之中。
如:
示例程序:
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); }
相关文章推荐
- C语言内存分配时间 分类: H_HISTORY 2013-02-11 10:51 1432人阅读 评论(3) 收藏
- C语言内存分配时间
- C语言内存分配时间
- C语言内存分配时间
- C语言内存分配时间
- c语言中内存的分配
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言三个内存分配函数比较,malloc calloc realloc
- C语言 内存分配方式 malloc() 与 alloc()
- C语言(8) 变量在内存中的分配原则
- 转载:C语言内存分配:malloc、calloc、realloc
- C语言的内存的分配机制
- C语言内存分配问题和C语言中的内存
- C语言 内存分配 地址 指针 数组 参数 实例解析
- C语言内存分配问题和C语言中的内存
- C语言内存分配问题
- C语言的内存分配和段错误的处理
- C语言内存分配问题
- C语言内存、存储机制、计算机内存分配机制
- C语言,内存对齐,内存分配,地址操作,结构体(二)