C语言 | C语言概说(下)

本文我们将说明C语言程序的结构

首先,我们来编写一个简单的C语言代码

#include<stdio.h> // 编译预处理指令 
  
// 定义add函数,该函数接受两个整数x和y作为参数,并返回它们的和  
int add(int x, int y) 
{  
    int z = 0; // 声明并初始化一个整型变量z,用于存储x和y的和,初始值设为0
    z = x + y; // 计算x和y的和,并将结果存储在变量z中  
    return z; // 返回变量z的值,即x和y的和  
}  
//定义主函数
int main() 
{  
    int a = 0; // 声明并初始化整型变量a,用于存储用户输入的第一个整数,初始值设为0
    int b = 0; // 声明并初始化整型变量b,用于存储用户输入的第二个整数,初始值设为0
    // 使用scanf函数从标准输入读取两个整数,并将它们分别存储在变量a和b中  
    scanf("%d %d", &a, &b);  
    // 调用add函数,将a和b作为参数传递,并将返回的结果存储在变量c中  
    int c = add(a, b);  
    // 使用printf函数输出变量c的值,即a和b的和  
    printf("%d ", c);  
  
    return 0; // 程序正常结束  
}

通过以上代码,我们来简单谈谈C语言程序结构分为哪几个部分:

一个程序由一个或多个源程序文件组成,而一个源程序文件可以包括5个部分:

一、 预处理指令

它的主要作用是在编译之前,将指定的文件内容插入到当前文件中。

#include<filename>:用于包含标准库头文件或系统头文件

#include<filename>:用于包含用户定义的头文件(可包含路径)

 二、 全局声明

全局声明指的是在函数外部进行的声明,这些声明对于程序中的所有函数都是可见的

2.1全局变量
#include<stdio.h>
int a = 10;

void func1()
{
    ...
    //在这里可以修改和访问a
}
void func()
{
    ...
    //在这里可以修改和访问a
}
2.2  全局常量
#define PI 3.14159
2.3  函数原型

是在函数实现之前在全局作用域中声明的函数签名,它告诉编译器函数的返回类型(void等)、名称和参数列表(括号内的)

// 函数原型声明  
void test();  
  
// 函数实现  
void test() {  
    printf("Hello, World!\n");  
}  
  
int main() {  
    test(); // 调用函数  
    return 0;  
}
2.4 结构体、联合体、枚举等类型定义
//结构体定义
struct test(){
    ...
}
//枚举定义
enum test(){
    ...
}

三、 函数定义

要指定每个函数的功能

一个函数包括两个部分:函数首部 + 函数体

1)函数首部:包括函数类型,函数名,函数参数类型,函数参数名 

//函数定义,接受两个整型参数x和y
int add (int x,int y)

 一个函数名后面必须跟一个圆括号写参数类型及参数名

如果函数不需要从命令行接收输入的程序,则不需要写参数类型及参数名,如:

int main () / int main (void)

 有的同学可能会疑惑,在开始举例的代码中,int main() 后明明有参数啊,为什么是空括号呢?

回答:尽管它看起来没有参数,但它仍然可以执行程序所需的所有操作,包括声明和使用局部变量、调用其他函数等。函数体内(花括号{}内的)的局部变量不是main函数的参数,而是函数执行期间在栈上分配的临时储存空间。调用其他函数中的参数也不是main函数的参数,这些参数是传递给被调用函数的。

2)函数体:函数首部下面花括号内的部分。如果一个函数中包含多个花括号,则最外面的一对花括号是函数体的范围。包括声明部分、执行语句和返回语句三部分:

声明部分:在函数体的开始部分,可以声明在函数内部使用的变量。这些变量是局部变量,它们的生命周期仅限于函数执行期间。

执行语句:函数在被调用时应该执行的具体操作

返回语句:函数类型非void的函数体必须包含一个或多个返回语句,返回语句制定了函数的返回值,并且每个返回语句都会导致函数立即退出。void类型没有返回值,则使用return;退出

 四、主函数

一个C语言程序是由一个或多个函数组成的,其中必须包含一个main函数。main函数是程序的入口,有且仅有一个。(即使一个项目有多个.c文件,但是main只能有一个)

注:main 前面的int表示main函数执行结束的时候返回一个整型类型的值,所以return 后可以接任何整型值,但是一般接0表示程序成功执行结束。如果后面跟其他值,则需在程序的文档中明确说明了每个非零返回值所代表的含义,否则其他程序或工具可能无法正确理解这些值。

main多种写法:

//函数定义中有介绍
int main ()
{
    return 0;
}

//确实不需要接受命令行参数
int main (void)
{
    return 0;
}

//需要接受命令行参数(argc 是一个整数,表示命令行参数的数量,而 argv 是一个指向字符指针数组的指针,每个字符指针都指向一个命令行参数)
int main(int argc, char *argv[])
{
    return 0;
}

//不需要返回值
void main ()
{
    printf("hello!")
}

五、注释

注释是对代码的说明,编译器会忽略注释,注释对实际代码没有影响

写必要的注释,帮助我们以及后期阅读代码的人更好地理解,也会给面试官留下好印象

包括/* */和//两种形式:

5.1 /* */

/* 开始 ,遇到*/结束。不支持嵌套。

//  /*  */注释的三种举例
/*   注释    */

/* 
     注释
*/
int add (int x/*  注释  */,int y)

5.2 / /

从/ /开始,到行尾都属于注释。所以它不能和/* */一样放在代码中间。

//   注释

int main() //   注释

 下节我们将具体讲讲scanf语句和printf语句,以及库函数的具体内容

  • 21
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值