c语言剖析,C语言深度剖析

基本数据类型分析

auto、register、static

if、switch、do、while、for

goto、void、extern、sizeof

const、volatile

struct、union

enum

typedef

基本数据类型

什么是数据类型?数据类型是创建变量的模具

61b5921d0501

数据类型是创建变量的模具

类型的本质:数据类型可理解为固定内存大小的别名

61b5921d0501

数据类型的本质是固定内存大小的别名

变量本质

变量是一段实际连续存储空间的别名

程序中通过变量来申请并命名存储空间

通过变量的名字可以使用存储空间

61b5921d0501

变量是一段实际连续存储空间的别名

类型和变量的关系

$ vim program.c

#include

int main()

{

char c = 0;

short s = 0;

int i = 0;

printf("\n%d, %d", sizeof(char), sizeof(c));

printf("\n%d, %d", sizeof(short), sizeof(s));

printf("\n%d, %d", sizeof(int), sizeof(i));

return 0;

}

$ gcc program.c -o program

$ program.exe

1, 1

2, 2

4, 4

$ vim program.c

#include

//自定义类型(别名)

typedef int INT32;

typedef unsigned char BYTE;

typedef struct _demo

{

short s;

BYTE b;

INT32 i;

} DEMO;

int main()

{

//创建变量

INT32 i32;

BYTE b;

DEMO d;

//数据类型是变量的模子

printf("%d, %d\n", sizeof(INT32), sizeof(i32));

printf("%d, %d\n", sizeof(BYTE), sizeof(b));

printf("%d, %d\n", sizeof(DEMO), sizeof(d));

return 0;

}

$ gcc program.c -o program

$ program.exe

4, 4

1, 1

8, 8

属性关键字

C语言中的变量可以有自己的属性

在定义变量的时候可以附加“属性”关键字

“属性”关键字指明变量的特有意义

auto、static、register

61b5921d0501

内存分配类型

auto

auto指明变量是在内存的栈上分配空间的

auto是C语言中局部变量的默认属性

编译器默认所有的局部变量都是auto

#include

int g = 0;

int main()

{

auto int i = 0;

static int j = 0;

register int k = 0;

return 0;

}

static

static 关键字指明变量的“静态”属性

static 关键字同时具有“作用域限定符”的意义

static修改的局部变量存储在程序静态区

static是文件作用域标识符

static修改的全局变量作用域只在声明的文件

static修改的函数作用域只在声明的文件中

register

register关键字指明将变量存储于寄存器中

register只是请求寄存器变量但不一定成功

register变量必须是CPU寄存器可以接受的值

不能使用&取地址运算符获取register变量的地址

#include

register int m = 0;

int main()

{

auto int i = 0;

static int j = 0;

register int k = 0;

return 0;

}

$ gcc program.c -o program

λ gcc program.c -o program

program.c:3:14: error: register name not specified for 'm'

register int m = 0;

小结

auto变量存储在程序的栈中,默认属性。

static变量存储在程序静态区中

register变量请求存储于CPU寄存器中

#include

int main()

{

auto int i = 0;

static int j = 0;

register int k = 0;

return 0;

}

#include

int main()

{

auto int i = 0;

static int j = 0;

register int k = 0;

printf("%0X\n", &i);

printf("%0X\n", &j);

return 0;

}

$ gcc program.c -o program

$ program.exe

61FF2C

407020

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言深度剖析PDF是一本面向C语言程序员的深入学习和理解C语言的电子书籍。该书通过系统性的剖析C语言的各个方面,帮助读者更加全面地了解和掌握C语言的原理和使用技巧。 首先,该书从C语言的历史背景和发展概况开始,介绍了C语言的起源和演化过程,让读者对C语言的产生和发展有一个整体的了解。接着,书中详细介绍了C语言的基本语法和结构,包括数据类型、变量、运算符、流程控制等方面,让读者对C语言的基本要素有一个清晰的认识。 除了基础知识,该书还对C语言的高级特性进行了深入剖析。比如,函数指针、内存管理、指针操作、结构体和共用体等高级特性在书中都得到了重点讲解。通过对这些特性的深入学习,读者可以更加灵活地运用C语言进行编程,提高代码的效率和可读性。 此外,该书还对C语言的一些常见问题和陷阱进行了详细解答。例如,内存泄漏、数组越界、函数调用和递归等问题和技巧都在书中得到了详细阐述。这些内容对于提高代码质量和调试技巧都是非常有益的。 总之,C语言深度剖析PDF通过全面、详细的介绍和分析,帮助读者更好地理解和掌握C语言的使用技巧和原理。对于正在学习C语言或者希望提升自己在C语言领域的专业水平的人来说,这本书是一本难得的参考书籍,值得一读。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值