| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 974 人关注过本帖
标题:写C一年了,还在这里迷惑,求解释啊
只看楼主 加入收藏
枝繁叶茂
Rank: 2
等 级:论坛游民
帖 子:14
专家分:32
注 册:2011-3-27
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
写C一年了,还在这里迷惑,求解释啊
程序代码:
#include "stdafx.h"

int i;
i =0;// ????????????????  为什么在这两处不能定义或者说不能在上上面声明,不能在下面进行定义。这是C语言的什么规定啊

char arr[12];
arr[12]="abc";//???????????????


int _tmain(int argc, _TCHAR* argv[])
{
i =0;//为什么能在这定义? 
    return 0;
}
2011-09-29 09:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
tmain()外的int i是全局变量,已带默认初始化为零,而int = 0是赋值语句,必须在函数体内执行,此处不是函数体,所以非法(你代码中有两个这类语句,包括后面的arr[12] = "")。tmain()内的int = 0编译时报告非法,应该是你外面int = 0非法引起的连锁反应,把那句删掉,这个就没问题。你测试一下。

这是ANSI C的规定,不是VS独特的。

授人以渔,不授人以鱼。
2011-09-29 09:20
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:6 
一、
    这是c语言规定,好比他规定int *p一样,你会不会问为什么要加"*"呢。
二、
char arr[12];
arr[12]="abc";//???????????????

这个意思是arr的第13个元素a[12]但他不存在,他要是存在就是一个越标的值。
他里面只有arr[0]、arr[1]、arr[2]~```arr[11];
定义财时赋值他是数组.
三、
    理清涵数的作用域问题。有在涵数里面,只有他的返回值对主体有用,我们调用涵数就是要为了得到一个返回值,与涵数体内的参数无关,比如在main()里面的i与涵数的i是完全两回事,你完全可以把涵数里的i写成k,除去你把main()的i当参数传递到涵数。但如果i是全局变量就不同了
这是我现在的理解,大家探讨一下

[ 本帖最后由 cosam 于 2011-9-29 09:25 编辑 ]
2011-09-29 09:22
枝繁叶茂
Rank: 2
等 级:论坛游民
帖 子:14
专家分:32
注 册:2011-3-27
收藏
得分:0 
以下是引用TonyDeng在2011-9-29 09:20:26的发言:

tmain()外的int i是全局变量,已带默认初始化为零,而int = 0是赋值语句,必须在函数体内执行,此处不是函数体,所以非法(你代码中有两个这类语句,包括后面的arr[12] = "")。tmain()内的int = 0编译时报告非法,应该是你外面int = 0非法引起的连锁反应,把那句删掉,这个就没问题。你测试一下。

这是ANSI C的规定,不是VS独特的。


书上又说赋值语句只能在函数的进行吗?哎 翻书好久也没看到这句话。我用的似乎那本c语言程序设计B.wk D的那本

好想死
2011-09-29 09:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
函数体外可以写声明带定义,即int i = 0,一行内写,但单纯的i = 0就是赋值语句,必须在某个函数体内。这是C/C++的语法规定。

授人以渔,不授人以鱼。
2011-09-29 09:29
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:4 
回复 楼主 枝繁叶茂
你白写一年了,全局变量和局部变量一样吗?当全局变量和局部变量同名时,再子函数内,会屏蔽全局变量,你对局部变量,进行初始化,是因你没定义,你对作用域不熟

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 09:31
cosam
Rank: 4
等 级:业余侠客
帖 子:146
专家分:259
注 册:2011-8-25
收藏
得分:0 
楼上好生气,哈哈
2011-09-29 09:37
枝繁叶茂
Rank: 2
等 级:论坛游民
帖 子:14
专家分:32
注 册:2011-3-27
收藏
得分:0 
回复 7楼 A13433758072
谢谢提醒。有点思路了。再去翻翻书去。

好想死
2011-09-29 09:39
C高手
Rank: 2
等 级:论坛游民
帖 子:18
专家分:12
注 册:2011-7-18
收藏
得分:0 
唉,书都白看了
2011-10-01 11:49
快速回复:写C一年了,还在这里迷惑,求解释啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015290 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved