从0到嵌入式开发工程师

本文介绍了C语言中的形参和实参概念,形参作为函数定义中的占位符,实参则是调用时传递的数据。还讲解了C语言的注释方式,包括单行和多行注释,以及预处理指令#if0用于代码的条件编译。此外,详细阐述了C程序的编译过程,包括预处理、编译、汇编和链接四个阶段。
摘要由CSDN通过智能技术生成

c语言

23.5.31

  1. 安装VS2022以及学会使用;

  2. 形参什么意思
    形参和实参的概念:
    ①形式参数:在函数定义中出现的参数,可以看做是一个占位符,它没有数据,只能等到函数被调用时接受传递进来的数据,所以成为形式参数,简称:形参。
    ②实际参数:函数被调用时给出的参数,包含实实在在的数据,会被函数内部的代码使用,所以被称为实际参数,简称:实参。

3.c语言注释代码的方法:
单行注释:
方法一://
主要用于注释一行代码,或者为一些代码加解释
多行注释:
方法二:/* /
用于多行代码的注释,也用于函数的说明
/

作者:
日期:
原型:
功能:
参数:
返回值:
/
方法三:#if 0 #endif
//主要用于预处理阶段,一些代码需要编译,另外一些代码不需要
//参与编译,例如:版本的选择(32位/64位),操作系统的选择(linux/unix/win)
// debug/release ,开关语句
if0 endif如何用
块注释符(/
…*/)是不可以嵌套使用的。
可以使用 #if 0 … #endif 来实现注释,且可以实现嵌套,格式为:
#if 0

code

#endif
你可以把 #if 0 改成 #if 1 来执行 code 的代码。
这种形式对程序调试也可以帮助,测试时使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。

  1. 程序的编译过程(gcc)
    预处理:所有带“#”号的代码都在预处理阶段完成
    (比如头文件的展开,宏替换,条件编译等)
    gcc - E 1 - hello.c - o 1 - hello.i
    编译 : 对c语言代码进行语法正确性和安全性的检查,
    栈空间和静态区的空间的分配,将.i文件生成.s(汇编文件)
    gcc - S 1 - hello.i - o 1 - hello.s
    汇编 : 将汇编文件生成二进制文件(.s—>.o)
    gcc - c 1 - hello.s - o 1 - hello.o
    链接 : 将所有的可链接文件(.o, 库文件)共同生成一个可执行文件
    gcc 1 - hello.o - o 1 - hello
    请添加图片描述#if 0

  2. 上课内容

程序的编译过程(gcc)
预处理:所有带“#”号的代码都在预处理阶段完成
(比如头文件的展开,宏替换,条件编译等)
gcc - E 1 - hello.c - o 1 - hello.i
编译 : 对c语言代码进行语法正确性和安全性的检查,
栈空间和静态区的空间的分配,将.i文件生成.s(汇编文件)
gcc - S 1 - hello.i - o 1 - hello.s
汇编 : 将汇编文件生成二进制文件(.s—>.o)
gcc - c 1 - hello.s - o 1 - hello.o
链接 : 将所有的可链接文件(.o, 库文件)共同生成一个可执行文件
gcc 1 - hello.o - o 1 - hello
#endif

//条件编译
#if 0
//代码1
#elif 1
//代码2
#else
//代码3
#endif
/*
c语言代码的基本组成单位:函数
c语言是一门结构性语言,数据开放,逻辑总是
从一个函数流向另一个函数
/
/

函数的基本组成:(三要素)
原型:<返回值> 函数名(形参1,形参2,…,形参n)
功能:函数具体要实现的功能
参数:分析形参的功能
返回值:分析返回值的功能
*/

//作用域:一个变量的可以被使用的范围
// 注意:在相同的作用域内,标识符不能冲突
//生命周期:一个变量从被申请空间开始到操作系统
// 将其空间回收的这一段时间
//注意:通常{}为普通变量的生命周期的范围

//在c语言中,0表示假,非0表示真
//#: 预处理标识符
//include :后面跟头文件的名称
//<>或者"“:里面写头文件的名字
//<>和”“有什么区别?
// <>和”“的寻址路径不同,<>直接从系统指定的路径中寻找
// 而”“先在用户指定的路径(默认为当前路径)中寻找,
// 找不到再去系统路径中寻找
// <>和”"的编译效率有所不同,但是运行阶段没有区别
//
//sdtio.h//标准输入输出头文件
#include <stdio.h>
//#include “stdio.h”

//main:主函数名,是整个程序的入口地址
//整个项目中,有且只能有一个main

/*
函数名:main
功能:整个进程的运行过程
参数:void:表示没有形参
返回值:int:表示程序结束的状态,返回一个整型
*/

//{}:作用域符号(通常包含一段代码块)
// 为普通变量的作用域标识符和生命周期

//全局变量:{}外部的称为全局变量
int a = 100;
int main(void)
{
//函数调用:函数名(实参);
//注意:函数调用时不需要加上返回值类型
printf(“hello world !\n”);
int a = 10;

{
	int a = 20;
	int b = 20;
	//%d:输出32位有符号正数
	printf("a = %d\n",a); //就近原则
}
//b = 30;

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值