有关c语言数组的声明,创建?

如果在一个方法(函数)里声明一个数组,如:intarray[5];请问是不是已经分配了5个int型的空间了,就可以在下面这样给它数值了,如:array[0]=1;再问,这... 如果在一个方法(函数)里声明一个数组,如:int array[5];请问是不是已经分配了5个int型的空间了,就可以在下面这样给它数值了,如:array[0] = 1;
再问,这五个空间是在什么样的内存中,是栈,还是堆呢?
听有人说数组名其实是一个指针,那么是不是存在一个名为array的变量,里面放的是array[0]的地址?
那么语句int array[5];就分配了6个空间呢?
展开
 我来答
派欧云
2011-08-30 · TA获得超过253个赞
知道小有建树答主
回答量:209
采纳率:100%
帮助的人:145万
展开全部
在C/C++里面直接声明的局部变量是分配在栈中的,在函数执行完成的时候自动退栈而释放;而使用malloc等函数自己动态申请的内存是放在堆中的,需要自己手动释放。
数组是没有多一个变量的,int array[5] 就是5个空间,array本身就是array[0]的地址,在程序中有一个变量符号表,我们是看不到的,即变量符号与地址的映射关系
哀傷の霜之哀傷ba69
2011-08-30 · 超过39用户采纳过TA的回答
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:122万
展开全部
空间的位置看你的数组在程序中定义的位置,有可能是栈,也可能是堆,也可能是全局数据域。
array可以当做指针使用,表示指向数组首地址的指针,数值与&array[0]相同,但意义不一样。
int array[5]只分配了5个int的空间,无误。
谢谢采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ningzhanma1227
2011-08-30 · TA获得超过255个赞
知道小有建树答主
回答量:112
采纳率:0%
帮助的人:132万
展开全部
数组名可以当做指针使用,但这种指针没有实际占用内存空间(不存在存放首地址什么的),因为你只能对该类指针(数组名)指向的数据操作!没有你想的那种多占一个空间存放地址的意思,数组名不是完整意义的指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
2015-10-29 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:941万
展开全部
数组的创建:
(1)声明一个数组,声明时用常量表达式指定数组维数,然后可以用数组名访问数组元素。
(2)声明一个变长数组,声明时用变量表达式指定数组维数,然后用数组名来访问数组元素。
(3)声明一个指针,调用malloc(),然后使用该指针来访问数组元素。malloc接受一个参数:所需内存字节数。然后malloc()找到可用内存中一个大小合适的块。内存是匿名的;也就是说,malloc()分配了内存,但没有为它指定名字。然而,它却可以返回那块内存第一个字节的地址。因此,可以把那个地址赋值给一个指针变量,并使用该指针来访问那块内存。因为char代表一个字节,所以传统上曾将malloc()定义为指向char的指针类型。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黄石佳诚家电维修
2011-08-30 · TA获得超过1427个赞
知道小有建树答主
回答量:1559
采纳率:93%
帮助的人:625万
展开全部
对,分配了5个整型空间,是栈,array[0]是该组的首地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式