中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档 | 网通镜像
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > C/C++
c下不能随便在语句中声明变量?
作者:未知 时间:2005-09-13 19:28 出处:ChinaUnix.net 责编:chinaitpower
              摘要:c下不能随便在语句中声明变量?

我写c程序,发现好像必须得把变量声明在函数的首部,不能在语句中来声明一个变量。是这样吗?

 vaaub 回复于:2004-04-05 11:38:32
比如我现在想读入一个命令行参数,然后声明一个数组,数组的大小就是这个命令行参数指定的。好像这样就不行。

 lenovo 回复于:2004-04-05 11:40:33
你说得没错。
还有c语言中数组定义必须指定它的大小,
而不能用变量来指定它的大小。

 FH 回复于:2004-04-05 11:40:50
[quote:fd71d6c119="vaaub"]我写c程序,发现好像必须得把变量声明在函数的首部,不能在语句中来声明一个变量。是这样吗?[/quote:fd71d6c119]
是的。
至于你的第二个问题,可以使用malloc。

 vaaub 回复于:2004-04-05 11:49:21
多谢两位。

 jefftsai2050 回复于:2004-04-05 12:04:01
[quote:a89cfba522="vaaub"]我写c程序,发现好像必须得把变量声明在函数的首部,不能在语句中来声明一个变量。是这样吗?[/quote:a89cfba522]

c++的语法支持随时声明变量,对于数组定义,例如 int a[10],这是静态分配,需要在编译时就知道数组大小,所以这里不能使用变量;
如果要定义可变数组,必须采用如下的形式:int * a = new int(size);

 whyglinux 回复于:2004-04-05 12:39:02
[quote:4969e361c5="jefftsai2050"]
... 对于数组定义,例如 int a[10],这是静态分配,需要在编译时就知道数组大小,所以这里不能使用变量;
如果要定义可变数组,必须采用如下的形式:int * a = new int(size);
[/quote:4969e361c5]

不同意上述结论。在 C++ 中可以使用变量来定义数组。如下面的数组定义是合法的。
[code:1:4969e361c5]
int num;
num = 10;
int a[num];
[/code:1:4969e361c5]

 flw 回复于:2004-04-05 12:57:26
[quote:5938ba77a8="whyglinux"]不同意上述结论。在 C++ 中可以使用变量来定义数组。如下面的数组定义是合法的。[/quote:5938ba77a8]
不行吧?

 HonestQiao 回复于:2004-04-05 13:15:26
c99可以阿

 odin_free 回复于:2004-04-07 09:27:42
[quote:d68f53f6db="HonestQiao"]c99可以阿[/quote:d68f53f6db]

对了 这才是最关键的地方 不是c++和c的区别
只要支持c99就可以

以前大家说的ansi c 多数都是c89

 stevens_wu 回复于:2004-04-07 09:33:30
[quote:7e26e974f7="HonestQiao"]c99可以阿[/quote:7e26e974f7]
编译的时候加上选项就可以了
#gcc --std=c99 test.c

 ___ 回复于:2004-07-17 17:45:38
int array[4];
...
...

array[]={1,2,3,4};//为何非法?!

难道一定要这样一次性初始化吗?
e.g:  int array[4]={1,2,3,4};

 lrh3025 回复于:2004-11-12 22:35:39
C中是变量声明,C++中是定义,编译器的实现机理是不一样的

 assiss 回复于:2004-11-13 23:18:03
[quote:6c82bf9fb7="___"]3,4};[/quote:6c82bf9fb7]


对,{}赋值只能出现在初始化的时候.

 assiss 回复于:2004-11-13 23:21:54
[quote:b2258d00db="vaaub"]我写c程序,发现好像必须得把变量声明在函数的首部,不能在语句中来声明一个变量。是这样吗?[/quote:b2258d00db]

除了很古老的tc2.0,
别的编译器一般都支持在任何地方声明变量吧?

当然在函数首部声明变量是一个好习惯..
准确的说,是在"{}"语句块中"{"出现的下一行声明变量,是一个好习惯.

 flw 回复于:2004-11-14 13:16:59
[quote:d53b26f9e8="assiss"]除了很古老的tc2.0,
别的编译器一般都支持在任何地方声明变量吧?[/quote:d53b26f9e8]
你说的非常不对。
只有支持 C99  的编译器才能这么做。
[quote:d53b26f9e8="assiss"]当然在函数首部声明变量是一个好习惯..
准确的说,是在"{}"语句块中"{"出现的下一行声明变量,是一个好习惯.[/quote:d53b26f9e8]
这种语法 TC2 也支持的。

 assiss 回复于:2004-11-14 15:48:55
是吗?这我倒不是很清楚了.
自TC2.0之后,再没接触过C89标准的纯C编译器了.
tc++3.0就支持在任何地方声明变量.不知道这是不是因为它把C当成C++来编译了.
VC6.0也可以在任何地方声明变量.可能它也是把C文件当成C++来编译了吧......
当年对IDE太过依赖了,结果根本不记得它们的实质了......
偏偏现在GCC支持绝大部分C99标准了,呵呵.也无法验证了....

也许是我把C和C++搞混了......

 flw 回复于:2004-11-14 20:34:37
[quote:5b36ea976d="assiss"]是吗?这我倒不是很清楚了.
自TC2.0之后,再没接触过C89标准的纯C编译器了.
tc++3.0就支持在任何地方声明变量.不知道这是不是因为它把C当成C++来编译了.
VC6.0也可以在任何地方声明变量.可能它也是把C文件当成C++来..........[/quote:5b36ea976d]
对头!
 8)  8)  8)  8)  8)

 Moon_GF 回复于:2004-12-26 20:01:53
[quote:ac3112df48="___"]3,4};[/quote:ac3112df48]

这可能是内存分配问题吧,
数组初始化时有分配内存,

关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有