c++程序编写和执行顺序的问题

作者&投稿:官邹 (若有异议请与网页底部的电邮联系)
C++程序的执行顺序是什么?~

执行是从 main 函数开始,但如果在main函数前存在类对象变量的声明,则可能会先调用类的构造函数来创建类对象。
第一个问题,如果函数的调用语句在定义之前,则需要进行声明,告诉计算机这个程序中有这么一个函数。因为编译是从上至下进行编译的,如果函数的调用放在了这个函数定义之前(未经声明),在编译时就会报错。
如果要使用的函数的定义在它使用之前,则不用进行声明(因为此时编译器已经知道这是一个函数了)(但是一般程序员都会把主函数放在程序的最上面,这样可以让程序很直观,但这样做则需要将后面定义的函数先进行声明)。
第二个问题,其中函数什么时候需要声明,什么时候不需要声明,我在上一个问题中已经讲了。区分函数的定义和其声明有一种方法。
函数的声明一般只有一句话(比如: int sum (int i);),这句话其实就是函数的定义的首句话。而函数的定义则会在其后面添加该函数的内容(既大括号里的语句。如:int sum (int i) { .....})另外,int sum (int i) { .....}这个并不是函数的调用,而是函数的定义。函数的调用这是这样的(就用程序中的sum做例子):sum(这里填写实参)。

你这个程序中有struct
point{
void
main()
{...}};中的函数名main不对,应该是display(),即:
#include
using
namespace
std;
struct
point{
void
setxy(double
a,double
b)
//你这里有打错字了是void不是viod
{x=a;y=b;}
void
display(
)
{cout<<x<<""<<y<<endl;}
double
x,y;
};
void
main(){
point
a;
a.setxy(10.6,18.5);
//
少了分号
a.display(
);
cout<<a.x<<""<<a.y<<endl;
}
#include
:#include
是包含头文件是用的,这句话就表明这个程序中包含这个头文件;
using
namespace
std;:是使用(using)命名空间(namespace)std(标准库中的东西都放在std中,这句话表明可以使用std中的一切东西(本程序中只用了std::cout,
std::endl
两个);
struct
结构体(在C++中它等同于class,有一个小小的区别就是,不说明访问权限时struct默认的是public,class
默认的是private),这个结构体的名字是point,point中定义了两个成员函数:一个名为setxy,无返回值的函数;一个名为display,无返回值的函数;两个函数数据成员:一个是double
x,一个是double
y;
接下来的是主函数mian(),主函数中定义了一个point类型的自定义变量a;
a.setxy(10.6,
18.5);表示a调用(point类型对象特有的)函数setxy,从而把10.6赋值给a.x(a的x值),18.5赋值给a.y;
a.display();表示a调用display(),从而把a.x,"",
a.y,
endl输出:即,在黑屏中显示10.6
18.5
cout<<a.x<<""<<a.y<<endl;等同于a.display().
你的程序中有很多不好的地方,但是这涉及的东西可能会很多,没法给你说,只能你自己下去看书,上面我已说的非常清楚了,你应该看的明白!
还有,程序的执行入口时main()函数,所以最先执行的是point
a;而在这句中用用到point类型,于是就执行struct
point类来为a分配内存,是a有效;下来执行a.setxy(10.6,
18.5);这句,上面说了意思了!因为里边没有循环,判断语句,所以他们的执行顺序是从上到下!

如果你在某个函数被调用之前定义它,那就不需要再声明了,因为系统读取程序的顺序是自上而下的,所以系统已经知道你要调用的函数。但是编译程序却是从main函数开始的,一个程序的开始就是main函数的开始,一个程序的结束就是main函数的结束。至于在main函数中对于各种其他函数的调用则可以看作是一个相对独立的过程。如:#include <iostream>
using namespace std;
void printstar(void)
{
cout<<'$'<<'$'<<'$'<<endl;
}
int main()
{
printstar();
cout<<"C++ 123"<<endl;
printstar();
return 0;
} 这就是个很简单的函数定义与调用,程序里main函数调用了printstar函数,我们在调用前就定义了printstar函数,所以不必再声明;而整个程序里从int main开始执行,首先引用一次printstar函数,然后输出C++ 123,然后再引用一次。得到的结果是:$$$ C++ 123$$$

如果函数定义在函数调用之前,那么就不用函数声明了。函数定义可以在调用之前或者之后,如果之前就不用在声明了。先执行主函数,在主函数中按你的程序语句的顺序执行,如果遇到了函数调用就跳出主函数,执行调用的函数,然后再回到主函数继续执行主函数。

记住一句话:都是先执行主函数然后再执行其它的~

在main后就在要前面声明函数。调用是不分前后的。。

c语言的顺序结构是按照书写的顺序执行程序语句对吗?
答:是的,所有语言都是按照书写顺序执行的执行到循环语句就执行多次循环体

C语言和C++的主函数中语句执行顺序的区别
答:printf函数调用会将输出立刻显示在屏幕上,cout不会立刻显示在屏幕上,cout在输出回车或者显示调用cout.flush();或者其他一些情况才刷新缓冲区 第一个就不说了,第二个先在缓冲区放入1,然后sleep 1秒,然后再放入2,再sleep 1秒,然后程序准备结束,才开始把输出缓存区的东西输出,所以你看到的效果是先...

函数定义与调用的编写顺序不分前后。
答:函数定义与调用的编写顺序不分前后如下:在编写程序时,函数定义与调用的顺序是一个常见的问题。一些编程语言要求函数必须在调用之前定义,而另一些编程语言则没有这个限制,允许函数的定义和调用顺序任意。不过,无论编程语言是否有这个限制,我们都应该遵循一定的规范来编写程序。首先,让我们看一下函数定义...

...A.C 语言程序总是从有定义的函数起顺序执行
答:d对的 c总是从main开始执行,main表示整个程序的入口 a的说法误区:一个程序不可能只有顺序结构 b的误区:被调函数根据你的需要也就是需要它的作用域而定义,但如果被调函数在主调函数之后定义的话,那么需要在主调函数中声明,main也是函数,把它当然一般函数来理解就是 c的误区:在main函数之前你想写...

C语言是什么? 要怎么编 ? 用什么编?
答:那么,我们如何学好《C程序设计》呢?一.学好C语言的运算符和运算顺序这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算...

在C语言中怎么看语句的执行顺序?怎么看哪一个语句是否执行?
答:程序按顺序执行,只有遇到 中断(break,continue),转移(goto),退出(exit,return)等才改变顺序.实型数按 数符,尾数,阶符,阶码 存放。float 有效数字只有 7到8位(十进制)。double 有效数字 14-15位(十进制)。位的分配与机器有关,有的顺序是:阶符N 数符R 阶码部分 小数位尾数部分 ...

程序设计中的三种结构
答:顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。循环结构循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。

C#的程序执行顺序
答:C# 类的初始化顺序 继承类的static数据成员的初始化器,继承类的static构造器 (在类名, 第一次被引用时, 调用, 如果, 没有这个构 造器, 则static数据成员何时被初始化, 是不可预测的)继承类的实例型数据成员的初始化器 在执行继承类的构造器的内容之前;基类的static数据成员 的初始化器 即 static...

C语言的几个问题
答:如果你只是一个c初学者,建议你还是把谭浩强《c程序设计》前几章好好看看,看到指针即可,如果想深入,或成为高手,指针链表,数据结构必须要看。如果你急于实现窗口,建议你下几个小程序,(用vc编写的),边琢磨边学习。从中还可以自己设计几个小软件呢 祝你学有所成,希望对你有帮助 ...

计算机程序:如何运作?
答:计算机程序是计算机执行任务的步骤和顺序,它定义了计算机在执行任务时所遵循的对象和处理规则。‍编程语言编程语言是计算机程序设计的基础,它将高级编程语言(如Java、C/C++、C#等)转化为机器语言,使其能够被CPU所识别并执行。程序设计语言程序设计语言是实现计算机程序的基础,它类似于一篇用英语写作的文章,...