Linux 数组头文件,嵌入式Linux学习前置技能-C语言之头文件的引用、宏定义、定义与声明、数据类型、数组、结构体...

目录

前言

头文件的引用

宏定义

定义(definition)和声明(declare)

数据类型

数组

结构体

指针

前言

C语言复习线第一篇,前几天总结的C语言难记知识点。

头文件的引用

#include “头文件”1

#include

在当前文件夹中寻找,当前文件夹中没有找到就去系统库中寻找

直接在系统库中检索头文件

宏定义

#define 标识符 常量

#define:在预编译时将所有该标识符替换为该常量。

#define与typedef的区别:

#define 标识符 常量

typedef 类型名 类型别名

预编译是处理,将标识符替换为常量

编译时处理,给当前作用域内的类型赋一个别名

定义(definition)和声明(declare)

变量定义:用于为变量分配储存空间,还可为变量赋初始值。在程序中每个变量有且只有一个定义

变量声明:用于向程序表明变量的类型和变量名。

定义也是声明:定义变量的同时声明了类型和名字

extern:声明 (此次声明)不是定义,即该变量的定义在其他文件,再次只进行声明。

当在声明时进行初始化时,相当于定义,即:

int a = 1; <=> extern int a = 1;

任何再多文件中使用的变量都需要有与定义分离的声明,即在一个definition.c文件中进行定义,在需要引用该变量的.c文件中包含definition.h后使用extern进行声明。定义只能有一个,生命可以有无数个。

#include #include "dedinition.h"

extern int a;//声明,a的定义在definition.c

//声明外部变量时可以把变量类型省略,如:extern a。;

extern int b = 1;//对声明进行初始化,即定义。;

/*extern 声明只有在在函数外部时可初始化,

如果其他文件中已有b的定义,这样会报错,相当于进行了重复定义。*/

int main(void)

{

int c = 1;//定义一个变量并初始化。

int c = 2;//重复定义,会报错。

int d; //定义一个变量,不初始化。

extern int e;//在该函数中引用外部变量e。

extern int f = 1;//不允许的初始化方式,会报错。

return 0;

}

数据类型

975bf91c85342b8adcc9607a7619c416.png

数据类型

长度

输出类型

int

4Byte

%d或%i

short

2Byte

%d或%i

long

8Byte

%ld

char

1Byte

%c

位、字节、字:

字节

bit

Byte

word

1

11111111

处理器位数个bit

位(bit):每一个位只能为0或1两个状态。

字节Byte:8位二进制数据组成一个字节(Byte),他是储存空间的基本计量单位。

一个英文字母占一个字节,一个中文字符占两个字节。

字(word):由若干个字节构成,字的长度为字长,字长由系统的位数决定。

数组

定义:类型说明符 数组名[常量表达式];

int a[3];

数组a中有三个元素:a[0]、a[1]、a[2]

数组的初始化:

int a[3] = {0,1,2};//定义是初始化只能顺序初始化,未赋值的默认初始化为0

int a[3] = {0,1};//此时a[2] = 0

int a[] = {0,1,2};//自动定义a有三个元素

错误的初始化:

int a[];//✖

int a[3] = {};//✖

int a[3] = {0,1,2,3};//✖

【注】:

数组名除表示该数组外还表示数组的首地址;

数组中元素在内存中的地址是连续分配的。

结构体

定义:

1.先定义在声明:

struct s_name

{

成员;

};//定义

struct s_name varname;//声明变量

2.定义的同时声明:

struct s_name

{

成员;

}var1,var2;//定义的同时声明var1,var2两个变量

struct s_name varname;//需要其他变量时还可以继续声明变量

或者

struct

{

成员;

}var1,var2;//定义的同时声明var1,var2两个变量,该结构体只有两个变量,无法继续声明其他变量

3.使用typedef定义结构体

typedef struct s_name

{

成员;

}tt;//tt表示struct s_name这个数据类型,之后可以使用tt直接定义新的结构体变量

结构体初始化:

struct s_name

{

int a;

int b;

int c;

}varname;

struct s_name varname = {1,2,3};//顺序赋值

struct s_name varname = {.a = 1,.c = 3};//乱序赋值C语言风格

struct s_name varname = {a:1,.c:3};//乱序赋值C++风格

/*先定义后初始化*/

varname.a = 1;

varname.b = 2;

varname.c = 3;

指针

#:预编译(或预处理)标识。预编译不是编译,而是在编译前对预编译标识后代码的处理。 ↩︎

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值