gpt4 book ai didi

c - 程序是查看所有代码然后运行,还是逐行运行?

转载 作者:行者123 更新时间:2023-12-02 15:25:20 24 4
gpt4 key购买 nike

为了正确看待事情,这里有一个简单的 C 程序,要求用户输入他们的名字,然后程序说“你好,[你的名字]”:

void PrintName(string name);

int main(void)
{
printf("Your name: ");
string s = GetString();
PrintName(s);
}

void PrintName(string name)
{
printf("Hello, %s\n,name);
}

在第 7 行中,我写了 PrintName(s),但是直到最后才定义 PrintName。

我的问题:如果一个程序一行一行地运行,当它第一次遇到 PrintName(s) 时,程序会不会不理解 PrintName 是如何定义的(因为函数定义是在之后,而不是之前),因此不会输出名字?

最佳答案

请记住,编程语言的存在是为了让我们的生活更轻松;编写二进制机器代码(1 和 0)是一件痛苦的事情,因此语言让我们能够更简洁地表达自己。

一些语言是解释性的(粗略地说,逐行检查),一些是静态编译的(编译器检查所​​有代码并在完成时生成可执行文件),还有一些完全做其他事情。

C 是静态编译的。

void PrintName(string name);

这是一个函数声明。这告诉编译器“存在一个名为 PrintName 的函数,它接受一个 string 参数”。

因此,当您的程序正在编译并且标识符 PrintName 被命中时,编译器知道它,可以检查您是否给它提供了一个字符串(以及其他内容)并愉快地继续。

编译器稍后会遇到 PrintName 的定义,并使用它来生成可执行文件。

如果你声明了一个函数,但没有定义它,你稍后会得到一个类似undefined reference to MyFunction的错误,意思是“你告诉我这个函数定义存在于某处,但我找不到它”。

关于c - 程序是查看所有代码然后运行,还是逐行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30698589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com