码了这么久的代码,我居然不知道C程序有这些结构?

一、C程序结构

1.预处理命令

你是不是经常在编写程序中看到以下等字样?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define
#error 
#if
#else
#elif
#endif
#ifdef
#ifndef
#undef
#line
#pragma

我想,大部分小白只知道前面5种预处理命令。
可能很多小白太过纠结于算法,而忽略了这些C语言的核心知识。
学知识,要善于总结。而不是学一点丢一点,成了杂学,没有系统的知识树。
在这里插入图片描述
下面就讲一讲预处理命令
①文件包含命令

//语法:#include<文件名>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

include是关键字,可以包含一个文件名,每个C语言程序都包含头文件,不同头文件提供不同的函数,若没有stdio.h这个头文件,C语言程序就无法输入(scanf)输出(printf);stdlib、string.h两个头文件也包含了其他的函数,要调用相应的函数,就要调用相应的头文件。
②宏定义命令

//语法:#define 标识符 字符串
#define PI 3.1415926
#define Hello "Hello World"
//又可以定义函数表达式
#define f(x) x*x  //表示f(x)=x^2
#define f(x,y) x*y //表示f(x,y)=x*y

宏定义的变量的作用域和生存期是整个程序,对整个程序都起作用。
③条件编译命令
关键字如下

#ifdef
#if
#else
#endif
#ifndef

许多C语言入门教材上缺乏对条件编译命令的详解,这里先混个脸熟,后续会有条件编译命令的专题。

2.语句

①语法
C语言语句虽然比汇编语言更加自由,但是也要遵从一定的语法,所有完整语句结束是都带有分号,在这里for开始到printf结束才是一个完整的语句,不是一行一个语句。

#include<stdio.h>
int main(){
for(int i=0;i<10;i++)
printf("%d",1);
}

②语句的分类
全局声明定义语句:

#include<stdio.h>
int a=1;
int main(){
	printf("%d",1);
}

位于main函数前的变量声明属于全局变量声明,int a=1属于全局声明定义语句,声明一个整形变量a并把1赋值给a,它的作用域是整个程序。
局部声明定义语句

#include<stdio.h>
int main(){
	int a=1;
}
#include<stdio.h>
int main(){
	int i;
	for(i=0;i<10;i++){
		int a=0;
		printf("%d",a);
	}
}

所有的局部声明定义语句都在{}代码块内,作用域为以{}为界限的整个代码块。
第一个程序的变量a作用于main函数,属于局部变量。
第二个恒星的变量a作用于for循环,属于局部变量。
执行语句

3.函数

函数由函数头和函数体构成。
很多小白一脸懵逼:
什么是函数头?什么函数体呢?

先讲讲函数体吧。
以main函数为例,main函数后面花括号扩起来的所有语句,这些语句可以定义了main函数的用途和执行过程,就是函数体。简单地说,函数体是函数的主要组成部分,是核心。
我们要自定义一个函数,就要写大量的函数体,表明这个函数的用途和作用。

啥是函数头呢?函数头是函数体前的所有部分。
这里有一个函数。

void func(int a,int b){
	int c;
	c=a+b;
	printf("%d",c);
}

花括号内的所有内容是函数体
函数头就是void func(int a,int b),它定义了函数的返回类型void和函数的参数(int a,int b)。

4.注释

注释符有两种
行注释符://
块注释符:/* … … */
它们不属于程序的执行部分,程序在执行时会跳过注释,注释只起到解释说明程序的作用,增加程序的可读性。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶叶扁舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值