在C语言中,程序的执行总是从main()函数开始。main()函数是C程序的入口点,它是程序执行的起点

原创

已于 2023-11-19 18:40:06 修改

·

4.8k 阅读

·

1

·

10

·

CC 4.0 BY-SA版权

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

文章标签:

#c语言

#开发语言

#后端

于 2022-01-05 18:53:23 首次发布

Examination(Results)

专栏收录该内容

189 篇文章

订阅专栏

本文详细介绍了C语言的执行过程,从main()函数开始,按照代码顺序执行,涉及函数调用、参数传递、控制结构及内存管理等方面。函数调用时,参数按值或引用传递,函数可以返回值或通过指针修改调用者变量。程序执行中,内存分为堆、栈和静态区等,不同区域存储不同类型的变量。此外,还讨论了函数的定义、调用规则以及内存分配对程序性能的影响。

摘要生成于

C知道

,由 DeepSeek-R1 满血版支持,

前往体验 >

在C语言中,程序的执行总是从main()函数开始。main()函数是C程序的入口点,它是程序执行的起点。所有其他的函数都在main()函数被调用之后被调用并执行。所以,如果你在C程序中定义了其他函数,它们只有在main()函数被调用后才会被执行。好的,以下是对C语言执行过程的进一步描述:

当程序从main()函数开始执行时,它将按照定义的顺序逐行执行代码。在C语言中,代码的执行是按照从上到下的顺序进行的。当程序执行到函数调用时,它会跳转到该函数的代码块并执行函数中的代码,直到函数执行完毕或遇到return语句返回main()函数或其他函数。

在执行过程中,程序可以调用其他函数,例如自定义函数或库函数。这些函数可以在main()函数之前或之后定义。调用函数时,程序将传递参数给函数,并将控制权转移给该函数。当函数执行完毕时,控制权将返回调用该函数的代码行,程序将继续执行。

除了调用函数外,程序还可以使用控制结构来改变执行流程。例如,可以使用if语句来根据特定条件执行不同的代码块,或使用for循环来重复执行一段代码。这些控制结构可以根据需要进行嵌套,以实现更复杂的程序逻辑。

总之,C语言的执行过程是从main()函数开始,按照代码定义的顺序逐行执行代码。程序可以调用其他函数并使用控制结构来改变执行流程,以实现所需的功能。好的,以下是对C语言执行过程的进一步描述:

当程序执行到函数调用时,它会将参数传递给函数。参数可以是变量、常量、表达式等。传递参数时,程序将把它们复制到函数的参数列表中,使得函数可以使用这些值并对其进行操作。函数可以对参数进行任何需要的操作,并且可以返回一个值作为结果。

在C语言中,函数可以被定义为返回一个值。当函数执行完毕时,它可以选择返回一个值。这个值可以通过return语句返回给调用该函数的代码行。调用函数的代码行可以将返回的值赋给一个变量或直接使用它来进行其他操作。

除了返回值外,函数还可以通过指针参数来修改调用代码中的变量值。当函数定义中包含指针参数时,函数内部可以对指针指向的变量进行修改,从而改变调用代码中的变量值。这种通过指针参数修改变量值的机制可以用于传递大型数据结构或避免数据复制等场景。

在执行过程中,程序还可以使用指针来引用内存中的不同地址。指针变量可以存储内存地址,并且可以通过对指针进行加法或减法等运算来访问不同位置的内存。这种指针操作可以用于动态内存分配、数组操作、结构体等高级数据结构中。

总之,C语言的执行过程涉及到函数调用、参数传递、控制结构等多个方面。程序员需要熟练掌握这些基本概念并灵活运用它们来编写出高效、可靠的程序。好的,以下是对C语言执行过程的进一步描述:

在C语言中,内存是程序执行的重要部分。程序在内存中分配空间来存储变量、数组、结构体等数据结构。当程序执行时,它会在内存中创建不同的区块来存储不同的数据和代码。这些区块包括堆区、栈区和静态区等。

堆区是用于动态内存分配的区域。当程序需要动态分配内存时,它可以使用malloc()、calloc()或realloc()等函数来从堆区分配一定大小的内存块。分配的内存块可以通过指针来访问和操作。当不再需要这块内存时,程序应该使用free()函数将内存块释放回堆区,以避免内存泄漏。

栈区是用于存储函数调用和局部变量等信息的区域。当程序调用函数时,它会创建一个新的栈帧来存储函数的参数、局部变量和返回地址等。当函数执行完毕时,栈帧将被销毁,从而释放所占用的内存空间。

静态区是用于存储程序中定义的静态变量和常量等信息的区域。这些变量和常量在程序执行期间一直存在,直到程序结束时才被释放。静态区包括全局变量、静态变量、常量等。

除了以上三个区域外,内存中还有其他一些区域,例如代码区、数据区和BSS区等。代码区用于存储程序的二进制代码,数据区用于存储初始化的全局变量和静态变量,而BSS区用于存储未初始化的全局变量和静态变量。

总之,C语言的执行过程涉及到内存分配、函数调用、控制结构等多个方面。程序员需要了解内存模型和各个区域的特点,以便更好地编写程序并优化其性能。

函数习题

1、单项选择题

(1)C 语言总就是从 A 函数开始执行。

A、 main B、处于最前的C、处于最后的 D、随机选一个

(2)函数在定义时,省略函数类型说明符,则该函数值的类型为 A 。

A、 int B、 float C、 long D、 double

(2)以下 B 函数,真正地没有返回值。

A、 int a(){int a=2;return (a);} B、 void b(){printf(“c”);}

C、 int a(){int a=2;return a;} D、以上都就是

(3)在 C 语言中,有关函数的说法,以下正确的就是 C 。

A、函数可嵌套定义,也可嵌套调用 B、函数可嵌套定义,但不可嵌套调用

C、函数不可嵌套定义,但可嵌套调用 D、函数不可嵌套定义,也不可嵌套调用

(4)以下函数调用语句中,含有实参的个数为 B 。

fun((2,3),(4,5+6,7));

A、 1 B、 2 C、 5 D、 6

(5)函数调用可以在 D 。

A、函数表达式中 B、函数语句中 C、函数参数中 D、以上都

就是

(6)被调函数返回给主调函数的值称为 C 。

A、形参 B、实参 C、返回值 D、参数

(7) D ,可以不进行函数类型说明。

A、被调函数的返回值就是整型或字符型时 B、被调函数的定义在主调函数定义之

前时

C、在所有函数定义前,已在函数外预先说明了被调函数类型D、以上都就是

(8)被调函数通过 D 语句,将值返回给主调函数。

A、 if B、 for C、 while D、 return

(9)被调函数调用结束后,返回到 B 。

A、主调函数中该被调函数调用语句处

B、主函数中该被调函数调用语句处

C、主调函数中该被调函数调用语句的前一语句

D、主调函数中该被调函数调用语句的后一语句

(10)以下对 C语言函数的有关描述中,正确的就是 A 。

A、在 C 中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参

B、 C函数既可以嵌套定义又可递归调用

C、函数必须有返回值,否则不能使用函数

D、 C程序中有调用关系的所有函数必须放在同一个源程序文件中

(11)C 语言中函数的隐含存储类型就是 A 。

A、 auto B、 static C、 extern D、无存储类型

(12)能把函数处理结果的两个数据返回给主调函数,在下面的方法中不正确的就是 A 。

A、 return 这两个数B、形参用两个元素的数组

C、形参用两个这种数据类型的指针D、用两个全局变量

2、填空题

(1) 变量的作用域主要取决于变量定义的位置 ,变量的生存期既取决于变量存

储类别 ,又取决于变量存储方式。

(2) 说明变量时,若省略存储类型符,系统默认其为整形存储类别,该存储类别的类型符

为: int 。

(3) 静态型局部变量的作用域就是静态局部变量定义的复合语句或函数体内 ,生

存期就是整个程序运行期内。

高级语言程序设计习题(最新版带答案)

(4) 函数中的形参与调用时的实参都就是数组名时,传递方式为地址传递 ,都就是变

量时,传递方式为值传递。

(5) 函数的形式参数的作用域为整个函数体内 ,全局的外部变量与函数体内定义

的局部变量重名时, 函数体内定义的局部变量优先。

(6) 若自定义函数要求返回一个值,则应在该函数体中有一条 return 语句,若自定义函

数要求不返回一个值,则应在该函数说明时加一个类型说明符 void 。

(7) 若函数的形式参数就是指针类型,则实参可以就是数组名、地址或指针变

量。

(8) 函数的参数为 char 类型时,形参与实参结合的传递方式为地址传递。

(9) 函数的实参为常量时,形参与实参结合的传递方式为值传递。

(10) 对数组按值从大到小的顺序排序后输出,请填空。

#include

void main()

{

float a[7]={2,6,3,8,3,12,9};

int i ;

void sort(float,int);

sort(a,7) ;

for(i=0;i<7;i++) printf(“%f “,a[i]);

printf(”\n”);

}

void sort( float p, int n )

{

int i,j,k; float t;

for(i=0;i

{

k=i;

for(j=i+1;j

if( p[k]

if(k != i)

{ t=(p+i); (p+i)=(p+k); *(p+k)=t; }

}

}

(11) 下列函数在 n 个元素的一维数组中,找出最大值、最小值并传送到调用函数,请填

空。

#include

void find(float *p, float *max, float *min, int n)

{

int k;

float t;

*max=*p; *min = p;

for(k=1;k

{

t=(p+k);

if( t>*max ) *max=t;

if(t

}

}

3、写出下列程序运行结果:

(1)

main()

高级语言程序设计习题(最新版带答案)

{

int i=1,p;

p=fun(i,i+1);

printf(“%d\n”,p);

}

int fun(int a,int b)

{

int f;

if(a>b)

f=1;

else if(a==b)

f=0;

else

f=-1;

return f;

}

输出:-1

(2)键盘输入 abcdef

#include

void fun( )

{

char c ;

if((c=getchar( ))!=‘\n’)

fun( ) ;

putchar©;

}

void main( )

{ fun( ); }

输出:fedcba

(3)

#include

#define C 5

int x=1,y=C;

void main( )

{

int x;

x=y++; printf(“%d %d\n”, x,y);

if(x>4)

{ int x ; x=++y; printf(“%d %d\n”,x,y) ; }

x+=y–;

printf(“%d %d\n”,x,y);

}

(4)

#include

int c , a=4 ;

func(int a , int b)

{ c=ab ; a=b-1 ; b++ ; return (a+b+1) ; }

void main( )

{

高级语言程序设计习题(最新版带答案)

int b=2 , p=0 ; c=1 ;

p=func(b , a) ;

printf(“%d,%d,%d,%d\n”, a,b,c,p) ;

}

输出:4,2,8,9

(5)

unsigned fun6(unsigned num)

{

unsigned k=1;

do { k=num%10; num/=10; }

while(num);

return k;

}

void main( )

{

unsigned n=26;

printf(“%d\n”, fun6(n));

}

输出:12

输出:5 6

7 7

12 6

top
Copyright © 2088 篮球世界杯美国队名单_意大利世界杯预选赛 - pyqtui.com All Rights Reserved.
友情链接