注册 登录
编程论坛 C++教室

关于声明数组的两个问题,请赐教

hsnr 发布于 2010-11-26 16:12, 723 次点击
鄙人在C++编程时用到以下两个数组声明的语句,有一位计算机专业的教授说我这样定义是错误的,她的说法是,二维数组不能缺省行数、一维数组不能用大写的字母A作为数组名,她说大写字母A在C++语言中有特殊的用法,弄得我雾煞煞的,哪位同志能告诉我她的说法对吗?声明语句如下:
int A[10],B[][5];
6 回复
#2
laoyang1032010-11-26 19:00
注意一下编程规范
1. 函数名的单词的每个首字母要大写
2. 变量名要小写,多个单词之间用“_“隔开(包括数组)
3. 常量所有字母要大些
二维数组当然要指定行数,除非是这样 int a[][3]={1,2,3,4,5,6};
相当于a[2][3]  有编译系统自定去识别  
但是这样不好  要注意编程规范  不然你写的代码没人愿意去看
#3
pangding2010-11-26 19:36
有些属于编程风格的,其实也不算规范。
比如函数名每个首字母大写的说法,好像是微软比较爱使。有很多人对这种写法深恶痛绝,觉得极为难看。

不过确实有些风格是大家一致比较喜欢的,比如常量或者宏的所有字母都用大写之类的。

这个风格什么的,最重要的其实是在一编程的时候保持一致性。不要一会这用这风格,一会那又变了。
还有就是要看环境,养成良好代码的风格。写和大家一致的代码,可以使别人理解你的代码时更容易,同时就会提高别人对你的主观印象。这和写作文时字迹工整的效果差不多。


至于楼主的问题,首先那个 A 的肯定是可以的,没有语法错误。
另一个 B 的问题,相对复杂一些。这有两个概念:一个叫声明(declaration),还有一个叫定义(definition)。
在声明数组时,缺省中括号里的常量表达式也被视作声明。语法上称这种声明声明了一种非完整对象类型(incompleted object type),这种声明不能用作定义。不过完整声明也不一定是定义,情况还是很多样的。
#4
kittel2010-11-27 16:00
回复 楼主 hsnr
数组在声明的时候要么写上维数,如果没写维数则需在后面添加定义,则系统会自动按照定义中的元素情况决定数组的大小。
如果既写维数,又有定义,但定义的元素小于维数,则系统将其他元素自动设为0。
你的第二个定义不对,需在后定义元素。如果不写列数,应该可以这样,int a[5][]={{1,2,3}};这样系统会自动将列数设为3。
#5
kittel2010-11-27 16:19
回复 楼主 hsnr
我刚才说错了,好像列数确实要在声明时写上维数。。
#6
laoyang1032010-11-27 18:31
回复 4楼 kittel
你的第二个定义不对,需在后定义元素。如果不写列数,应该可以这样,int a[5][]={{1,2,3}};这样系统会自动将列数设为3。
int a[5][]={{1,2,3}};     先把你的这句话拿到编译系统里面编译一下  看看有没有错误再拿上来   误导人
#7
kittel2010-11-29 13:20
回复 6楼 laoyang103
我都说了,写错了嘛
1