欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-03-24 09:58:58
...

一、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语言的核心知识。
学知识,要善于总结。而不是学一点丢一点,成了杂学,没有系统的知识树。
码了这么久的代码,我居然不知道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.注释

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

相关标签: C/C++ c语言 c++