嵌入式Linux C编程 02

本文详细介绍了C语言中的各种数据类型及其取值范围,包括枚举类型、指针常量、全局变量的定义与声明等内容。同时,还探讨了不同存储方式下变量的特点,如静态存储和动态存储的区别,以及变量的生存期和作用域等概念。

004215_VwI9_877598.png

004348_xVt2_877598.png

004425_xInU_877598.png

查看当前机器的各数据类型的取值范围,可查看文件“limits.h

004748_ORqD_877598.png

004853_R1CK_877598.png

2.2.4、枚举类型

enum 枚举名
{
    枚举值表
};

005202_zbRO_877598.png

在32位机中地址长度都是32位,因此,无论哪种类型的指针都占4个字节。

2、指针常量

指针常量只有唯一的一个NULL(空地址)。

 

全局变量

(1)全局变量的定义和全局变量的声明并不是一回事,全局变量定义必须在所有的函数之外,且只能定义一次,其一般形式为:

[extern] 类型说明符 变量名, 变量名...

extern可以省略。

全局变量的声明出现在要使用该变量的各个函数内。在整个程序中,可能出现多次。

extern 类型说明符 变量名, 变量名...

全局变量在定义时就已经分配了内存单元,并且可做初始赋值。全局变量声明时不能再赋初始值,只是表明在函数内要使用某外部变量。

(3)全局变量的内存分配是在编译过程中完成的。

3、变量的存储方式

静态存储 和 动态存储

生存期 和 作用域

存储类型:

  • auto 自动变量(动态)
  • static 静态变量(静)
  • register 寄存器变量(动态)
  • extern 外部变量(静)

1、函数内凡未加存储类型说明的变量均视为自动变量,也就是说自动变量可省去说明符auto。

静态局部变量 和 静态全局变量

const int *a;
int * const a;

第一条,修饰指针a所指向的地址,无法通过指针a来修改其指向的对象的值。但是a这个指针本身的值(地址)可以改变,即指向其他对象。

第二条,修饰的是指针a。(地址)不可改变。

 

2.4.7、sizeof操作符

单目运算符;运算对象是变量或数据类型;结果为一个整数。

变量占用内存空间的字节数。

012053_TLLX_877598.png

 

012228_VkF9_877598.png012246_JhSx_877598.png

结构体

struct 结构体名
{
    类型 成员名;
    类型 成员名;
    ...
} 结构体变量名;

结构体名是结构体的标识符,不是变量名。

struct person
{
    char name[8];
    int age;
} p1;
struct person
{
    char name[8];
    int age;
};

struct person p1;

012728_6D2c_877598.png012745_DZxO_877598.png

void *malloc(size_t size);

free释放

012918_F77j_877598.png

012952_gnZn_877598.png

013058_Pdi9_877598.png

2.8、_attribute_机制介绍

_attribute_语法格式:

_attribute_ ((attribute-list))

 

 

 

 

转载于:https://my.oschina.net/u/877598/blog/1021853

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值