社区
C语言
帖子详情
热心人请过来帮我。教材理解问题
hqhqhw
2007-02-03 03:19:06
包括谭的教程在内的书上都有这样一句话:c 只能对静态数组进行初始化
但是我下面的程序在tc2上能通过,请给我指点!
main()
{
int a[]={1,2,3};
printf("%d",a[1]);
}
...全文
258
12
打赏
收藏
热心人请过来帮我。教材理解问题
包括谭的教程在内的书上都有这样一句话:c 只能对静态数组进行初始化 但是我下面的程序在tc2上能通过,请给我指点! main() { int a[]={1,2,3}; printf("%d",a[1]); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yachong
2007-02-04
打赏
举报
回复
楼主看的是哪一个版本的教材?
谭的C从第二版开始好像就已经修改这种说法了
doubhor
2007-02-03
打赏
举报
回复
其实语法就是一些规定,如果站在编译器的角度去理解,就会好很多。
上面关于数组的初始化问题应该是不同时候的标准规定,其实现在好多编译器都并不是完全按照标准来实现的。实际使用的时候遇到这种情况可以测试一下,一切就都明白了,不是还有事实标准嘛。
动态数组是指在运行时通过动态分派内存自己管理存储空间的数组使用方法。在本质上面数组和内存没有什么本质的区别,数组就是一片内存区域而已,数组的各种运算符都是编译器在解析其行为。
bombwang
2007-02-03
打赏
举报
回复
静态的啊
hqhqhw
2007-02-03
打赏
举报
回复
看来只能强迫自己去理解这两篇了。
http://topic.csdn.net/t/20050202/16/3771403.html
http://topic.csdn.net/t/20020623/11/823999.html#
hqhqhw
2007-02-03
打赏
举报
回复
对不起,书上说的是静态存储数组,不是静态数组。我的问题里面少了两个字。
sycnick
2007-02-03
打赏
举报
回复
楼主,建议你试一下
int _tmain(int argc, _TCHAR* argv[])
{
int a[];
a[0]=1;
a[1]=2;
printf("%d",a[1]);
return 0;
}
然后再想想。
hqhqhw
2007-02-03
打赏
举报
回复
我说的就是谭的书。我看到别人也发了同样的帖子,但是不知道结果
hqhqhw
2007-02-03
打赏
举报
回复
http://dev.10026.com/c/c/20057265601_4128435.shtml
迷糊了,迷糊了
--------------------------------------------------------------------------------
发布时间: 2006-12-15 ; 上次回复: 2006-12-15; 总计回复: 23人次
--------------------------------------------------------------------------------
今天我在书上看见了段代码
main()
{
int a[10]={1,2,3,4,5};
不是说静态存储数组和外部存储数组才可作初始化赋值吗?
这样怎吗可以阿?
--------------------------------------------------------------------------------
一天一小步 [等级:◆◆(初级)] (信誉值: 100) 回复于: 2005-7-7 10:50:51 Top
我从没有听说过 “只有静态存储数组和外部存储数组才可作初始化赋值”
--------------------------------------------------------------------------------
学习 [等级:◆◆(初级)] (信誉值: 100) 回复于: 2005-7-7 10:56:10 Top
这样从a[0]到a[4]的值分别是1、2、3、4、5,下面几位都是0
--------------------------------------------------------------------------------
湘江一角 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 11:00:58 Top
顶
--------------------------------------------------------------------------------
newer [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 11:20:32 Top
没明白楼主的意思
--------------------------------------------------------------------------------
此人已注销 [等级:◆◆◆(初级)] (信誉值: 100) 回复于: 2005-7-7 11:32:48 Top
to 楼主:
楼主把书里的意思给误解了,并非只有静态存储数组和外部存储数组才可作初始化赋值,而是系统只对全局和静态数据进行自动初始化,而局部数据需要开发人员手动初始化,如果开发人员未进行初始化,该变量的值是随机的。
--------------------------------------------------------------------------------
mbcw [等级:◆◆◆(初级)] (信誉值: 100) 回复于: 2005-7-7 11:34:22 Top
早期的C语言不允许自动数组变量的初始化(大概是C89, 不能肯定).
C99中明确定义这种方式是合法的(肯定).
目前我所用到的C编译器都支持这种方式.
--------------------------------------------------------------------------------
哈利路亚 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 14:20:07 Top
我在C语言中常见错误中看到的:
16.初始化数组时,未使用静态存储。
int a[3]={0,1,2};
这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:
static int a[3]={0,1,2};
谁能给解释一下!!??
--------------------------------------------------------------------------------
正 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 14:26:31 Top
回复人: hello81(哈利路亚) ( ) 信誉:100 2005-07-07 14:20:00 得分: 0
我在C语言中常见错误中看到的:
16.初始化数组时,未使用静态存储。
int a[3]={0,1,2};
这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:
static int a[3]={0,1,2};
谁能给解释一下!!??
=========================================================================================
楼上的 ,你又误解了,megaboy(此人已注销) 不是已经说了吗。再理解一下 :)
=========================================================================================
回复人: megaboy(此人已注销) ( ) 信誉:100 2005-07-07 11:32:00 得分: 0
to 楼主:
楼主把书里的意思给误解了,并非只有静态存储数组和外部存储数组才可作初始化赋值,而是系统只对全局和静态数据进行自动初始化,而局部数据需要开发人员手动初始化,如果开发人员未进行初始化,该变量的值是随机的。
--------------------------------------------------------------------------------
哈利路亚 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 15:52:52 Top
先谢谢各位了
还是没明白
int a[3]={0,1,2};如果这样定义,会有什马结果阿??
--------------------------------------------------------------------------------
匿名 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 16:36:43 Top
结果是,如果你在接下来的一语句中写 cout<<a[0]<<a[1]<<a[2];
你会看到012
从来没听说过只有静态数组才能初始化,只听过静态形的变量必须初始化。
--------------------------------------------------------------------------------
哈利路亚 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 16:46:03 Top
那不就是正确的了吗?
--------------------------------------------------------------------------------
绿果 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 16:51:14 Top
一般的编译环境都支持这样!!!书上写的也有时不太对。
--------------------------------------------------------------------------------
嘉俊 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 17:09:59 Top
尽信书不如无书
--------------------------------------------------------------------------------
哈利路亚 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 22:24:15 Top
晕
--------------------------------------------------------------------------------
匿名 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-7 22:24:34 Top
.....
--------------------------------------------------------------------------------
匿名 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-8 10:55:58 Top
--------------------------------------------------------------------------------
无烟亦如烟 [等级:◆◆◆◆(中级)] (信誉值: 100) 回复于: 2005-7-8 17:53:00 Top
书错了?
断章取义?
--------------------------------------------------------------------------------
某疯子 [等级:◆◆(初级)] (信誉值: 100) 回复于: 2005-7-8 18:02:07 Top
不是说静态存储数组和外部存储数组才可作初始化赋值吗?
谁说的?什么时候说的???
--------------------------------------------------------------------------------
哈利路亚 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-8 18:04:22 Top
回复人: hello81(哈利路亚) ( ) 信誉:100 2005-07-07 14:20:00 得分: 0
我在C语言中常见错误中看到的:
16.初始化数组时,未使用静态存储。
int a[3]={0,1,2};
这样初始化数组是不对的。C语言规定只有静态存储(static)数组和外部存储(exterm)数组才能初始化。应改为:
static int a[3]={0,1,2};
--------------------------------------------------------------------------------
killua~~ [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-8 18:08:33 Top
小问题 也能见真章
--------------------------------------------------------------------------------
哈利路亚 [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-9 15:16:04 Top
up
--------------------------------------------------------------------------------
zhongshexiang@126.com [等级:◆(初级)] (信誉值: 100) 回复于: 2005-7-9 15:49:31 Top
lz太迷信书了,自己要实践呀
--------------------------------------------------------------------------------
三次表白被拒,从此专心写程序! [等级:◆◆(初级)] (信誉值: 100) 回复于: 2005-7-9 15:50:23 Top
孟子说:尽信书不如无书!不要太相信书上的东西,不明白的自己调试一下就明白了,实践是检验真理的唯一标准
sycnick
2007-02-03
打赏
举报
回复
5.4 动态数组
与固定数组对应的是动态数组,即数组元素个数不定的数组。
有时候可能不知道数组到底多大才合适,希望在运行时可以改变数组的大小(或大小不断改变),这时就要使用动态数组.
与固定数组不同的是:灵活、经济,可伸缩,这样不会浪费内存。
要创建动态数组,需要分两步进行:先预定,后决定。
hqhqhw
2007-02-03
打赏
举报
回复
to sycnick(李小虾) 我认为他是动态数组。
sycnick
2007-02-03
打赏
举报
回复
楼主,认为int a[]={1,2,3};是动态数组?
www_adintr_com
2007-02-03
打赏
举报
回复
他的意思大概是无法对 int* p = new int[100] 这种动态分配的数组不能初始化
软件工程第1次作业
项目 内容 本次作业所属课程 2019BUAA软件工程 本次作业要求 ...我在本课程的目标 学习软件工程的相关知识,了解团队协作编程,为以后的...快速看完整部
教材
,列出你仍然不懂的5到10个
问题
,发布在你的个人博客...
强化学习极简入门:通俗
理解
MDP、DP MC TC和Q学习、策略梯度、PPO
强化学习里面的概念、公式,相比ML/DL特别多,初学者刚学RL时,很容易被接连不断的概念、公式给绕晕,而且经常忘记概念与公式符号表达的一一对应(包括我自己在1.10日之前对好多满是概念/公式的RL书完全看不下去,...
源码版本管理-git简明
教材
很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。 Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的, 这么多人在世界各地为Linux编写...
入专利代理人行业,看我是如何熬
过来
的!
),我是在一个知识产权非常成熟的台企入的行,除了一个公司安排的师傅,其他前辈也皆为我师(谁看你做的不好都可以说你(⊙﹏⊙)b,当然,不是他们没事找事,而是他们确实都是很负责的,谁愿意没事去得罪人啊)。...
展现自己的人生智慧
”鸠问它为什么,枭说:“这里的人都讨厌我的叫声,所以我要搬到东方去。”鸠说:“那你就改一改你的叫声吧,如果你不改的话,你到了东方,东方的人也会讨厌你的。” 心灵哲思 解决
问题
要从根本上着手,...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章