| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1839 人关注过本帖
标题:在编程学习过程中遇到的一些很低级的问题,请大侠赐教!
只看楼主 加入收藏
菜鸟砖家
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-12-5
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:45 
在编程学习过程中遇到的一些很低级的问题,请大侠赐教!
下面这串代码清单:
1.哪些行包含变量定义?
2.哪些行包含函数原型?
3.哪些行包含函数定义?
大概意思我懂, 就是实际上圈出来发现识别能力不够,大侠伸出您那普渡世界的双手吧!

清单如下:

/* ex02-02.c */
#include <stdio.h>

void display_line(void);

int main(void)
{
    display_line();
    printf("\n Teach Yourself c In 21 Days!\n");
     display_line();
     
     return 0;
}

/* print asterisk line */
void display_line(void)
{
    int counter;
   
    for( counter = 0; counter < 30; counter++ )
       printf("*" );
}
/* end of program */
搜索更多相关主题的帖子: 编程学习 counter include return 能力 
2014-12-31 11:35
菜鸟砖家
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-12-5
收藏
得分:0 
求指教!!

编出一片天下。
2014-12-31 11:36
菜鸟砖家
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-12-5
收藏
得分:0 
为什么没人帮我阿!!

编出一片天下。
2014-12-31 12:16
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:709
专家分:2063
注 册:2010-11-11
收藏
得分:5 
不是不帮你,认认真真看了书你绝对知道这些东东。
2014-12-31 13:30
菜鸟砖家
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:23
专家分:5
注 册:2014-12-5
收藏
得分:0 
回复 4楼 八画小子
真看书了,识别的时候感觉总有点不对。。

编出一片天下。
2015-01-02 09:15
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:5 
程序代码:
#include <stdio.h> //预编译要包含的头文件

void display_line(void); //2.函数原型

int main(void) { //主函数定义 程序入口 无函数原型
    display_line(); //函数调用
    printf("\n Teach Yourself c In 21 Days!\n"); //调用printf函数
    display_line(); //函数调用
    return 0; //主函的返回值
}

void display_line(void) { //3.函数定义
    int counter; //1.变量定义

    for(counter = 0; counter < 30; counter++) //for循环(表达式1;表达式2;表达式3)
        printf("*"); //调用printf函数
}

Only the Code Tells the Truth             K.I.S.S
2015-01-03 12:21
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
回复 6楼 longwu9t
函数display_line()中的int counter不是定义,只是声明而已。1楼的代码中,没有数据定义的语句。

授人以渔,不授人以鱼。
2015-01-03 12:28
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 7楼 TonyDeng
好的 我明了
大意了 顺着楼主的思路走了

Only the Code Tells the Truth             K.I.S.S
2015-01-03 12:42
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
又在网上找了一下关于变量定义和声明的解释:http://blog.

变量的声明有两种情况:
(1) 一种是需要建立存储空间的(定义、声明)。例如:int a在声明的时候就已经建立了存储空间。
(2) 另一种是不需要建立存储空间的(声明)。例如:extern int a其中变量a是在别的文件中定义的。
前者是"定义性声明(defining declaration)"或者称为"定义(definition)",而后者是"引用性声明(referncing declaration)"。从广义的角度来讲声明中包含着定义,但是并非所有的声明都是定义,例如:int a它既是声明,同时又是定义。然而对于extern a来讲它只是声明不是定义。一般的情况下我们常常这样叙述,把建立空间的声明称之为"定义",而把不需要建立存储空间称之为"声明"。很明显我们在这里指的声明是范围比较窄的,也就是说非定义性质的声明。

例如:在主函数中
int main()
{
extern int A; //这是个声明而不是定义,声明A是一个已经定义了的外部变量
//注意:声明外部变量时可以把变量类型去掉如:extern A;
dosth();      //执行函数
}

int A;            //是定义,定义了A为整型的外部变量(全局变量)


外部变量(全局变量)的"定义"与外部变量的"声明"是不相同的,外部变量的定义只能有一次, 它的位置是在所有函数之外,而同一个文件中的外部变量声明可以是多次的,它可以在函数之内(哪个函数要用就在那个函数中声明)也可以在函数之外(在外部变 量的定义点之前)。系统会根据外部变量的定义(而不是根据外部变量的声明)分配存储空间的。对于外部变量来讲,初始化只能是在"定义"中进行,而不是在" 声明"中。所谓的"声明",其作用,是声明该变量是一个已在后面定义过的外部变量,仅仅是在为了"提前"引用该变量而作的"声明"而已。extern只作 声明,不作定义。

用static来声明一个变量的作用有二:
(1) 对于局部变量用static声明,则是为该变量分配的空间在整个程序的执行期内都始终存在
(2) 外部变量用static来声明,则该变量的作用只限于本文件模块

×××××××××××××××××××××××××××××××××××××××××××××××
从上文来看,我在6楼的注释也不算错

Only the Code Tells the Truth             K.I.S.S
2015-01-03 12:49
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
之所以局部自动变量未初始化时的值不定,就是因为只有声明无定义,int counter只是声明在本函数中将出现counter这个名称的变量,但并没有真正开辟构建数据实体,只有在执行for()循环中counter = 0的时候,才在栈中创建数据实体,这个时候数据在什么位置是临时找到的,所以它的值不确定,这条赋值语句是把一个常数复制给新创建的数据实体,与定义时初始化马上置值不同(比较一下C++的数据定义方式int counter(0)即知本质区别)。自动变量的值不确定,就是这样来的。相反,对静态变量,编译器是会按默认机制初始化数据的,通常会置零(在C++中就是由类或结构体的构造函数决定初始值)。

授人以渔,不授人以鱼。
2015-01-03 12:52
快速回复:在编程学习过程中遇到的一些很低级的问题,请大侠赐教!
数据加载中...
 
   



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

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