设为首页 - 加入收藏
广告 1000x90
您的当前位置:144177黄大仙有求必应 > 静态存储分配 > 正文

关于C语言中数组分配内存等问题!额本人是菜鸟被一C语言书上的话

来源:未知 编辑:admin 时间:2019-08-16

  关于C语言中数组分配内存等问题!额,本人是菜鸟,被一C语言书上的话弄晕了! 如果我的问题有些怪,请见谅

  关于C语言中数组分配内存等问题!额,本人是菜鸟,被一C语言书上的话弄晕了! 如果我的问题有些怪,请见谅

  书上说:“C语言是在编译阶段为数组开辟单元的”!问题:1、定义在一个函数里的数组(auto型),不也是局部变量吗?局部变量不是在函数被调用或说是程序运行到函数时才分配内存的吗?...

  问题:1、定义在一个函数里的数组(auto型),不也是局部变量吗?局部变量不是在函数被调用或说是程序运行到函数时才分配内存的吗? 怎么变成编译时就分配了!

  2、全局变量和静态变量是编译时开辟内存,若没有初始化,则程序自动赋零。对数组:若char a[10],这个数组没有赋初值;该数组在编译时是不是只开辟内存,初始化由程序员完成?!

  3、“数组分为静态数组(在声明时已经确定子数组大小的数组)和动态数组(在程序执行过程可中改变数组的大小)”—这个是针对C语言来说的吗?那通常在C语言里定义的数组是属于哪种?如:int a[10] —这个数组大小固定了,可它是auto型还是static型?? 定义静态数组不用在前面加static关键字吗?“静态数组”不是应该存储在静态存贮区里的吗?我感觉这个数组还是存贮在栈中的啊!展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部1. 准确地说,局部变量是在该函数被调用的时候才会得到所分配的内存空间。但是该内存空间的分配形式是在编译的时候就确定了的。

  静态数组的意思是:数组的大小在程序编译完就确定了。动态数组的意思是:数组的大小要程序运行起来之后才知道。

  int *a= malloc(sizeof(int)*n); //分配了一个动态数组。数组大小由n决定。

  展开全部对于第二个问题,分配一个char a[10]的数组会被初始化么?肯定不会呀,不然memset()这个函数拿来干什么呢?主要就是对内存清零的嘛,写个简单的程序一试就知道了!

  对于第三个问题,静态数组就是分配在栈上的数组,当程序执行完毕后,操作系统会对其内存回收,其长度是不变的,也不用加static关键字,动态数组就是利用malloc分配的内存,是在堆上的,使用后系统不会回收,要自己释放,用free,不然会造成内存泄漏,一旦没了内存可分配,系统就挂掉了!

  其实我只是想说,定义一个数组,它的初始化肯定要你自己初始化的,绝对不是0!

  展开全部1.除了字符串等常量,用malloc等动态分配的变量,其他变量都在链接的时候绑定了内存地址。

  展开全部1,函数是在编译期间只是引入代码,所以它的局部变量是不会开辟空间的,只有在调用的的时候开辟

  2是啊,a里面全是随机数据,你可以打印看看吗?当然你也可以char a[10]={0}就全是0值了

本文链接:http://that-a-way.com/jingtaicunchufenpei/539.html

相关推荐:

网友评论:

栏目分类

现金彩票 联系QQ:24498872301 邮箱:24498872301@qq.com

Copyright © 2002-2011 DEDECMS. 现金彩票 版权所有 Power by DedeCms

Top