C语言拾遗(1)
- C语言拾遗(1)
-
- 细节1
- 指针
- 局部变量和全局变量
-
- 局部变量
- 全局变量
- 跨文件的变量引用
- 常量
- 头文件的引入
C语言拾遗(1)
细节1
-
一字节为八个二进制位。
-
strlen:strlen 是一个函数,它用来计算指定字符串 str 的长度,但不包括结束字符(即 null 字符)。
-
sizeof:sizeof 是一个单目运算符,而不是一个函数。与函数 strlen 不同,它的参数可以是数组、指针、类型、对象、函数等。功能是获得保证能容纳实现所建立的最大对象的字节大小。
-
字符数组及它的两种初始化
指针
- 指针全称是指针变量,其实质是C语言的一种变量。这种变量比较特殊,通常他的值会被赋值为某个变量的地址值,然后可以使用*p这样的方式去间接访问p所指向的那个变量。
- int *p; 定义指针变量p,在定义时这里的 *含义是告诉编译器p是一个指针变量。
- *p = 123;使用指针的时候,*p代表指针变量p所指向的那个变量。
- 各种不同的指针
- 指针与数组的初步结合
- 函数传参中使用指针
局部变量和全局变量
- 定义的同时没有初始化时,局部变量的值是随机的,而全局变量的值默认是0 。
- 使用范围上,全局变量具有文件作用域(整个文件),而局部变量只有代码块(在{ }中)作用域。
- 生命周期上,全局变量是在程序开始运行前的初始化阶段就诞生,到整个程序结束退出的时候才死亡;而局部变量在进入局部变量所在的代码时诞生,在该代码块退出的时候死亡。
- 分配位置上,全局变量分配在数据段上,而局部变量在栈上。
- 数据段:存的是数,全局变量存在数据段。代码段:存的是代码,一般是只读的。栈(stack):先进后出,局部变量存在栈中。
局部变量
- 被调函数被main函数调用结束,普通的局部变量(auto)的内存就被释放了;静态局部变量(static的内存不释放,和全局变量非常类似。
- register(寄存器)类型的局部变量表现上和普通局部变量一样,被称为是C语言中最快变量。C语言会将register变量放到寄存器中运行(普通的变量是在内存中),所以register变量访问速度会很快。但是它是有限制的,因为寄存器数目是有限的,其次register变量在数据类型上有限制,例如不能定义double类型的register变量。一般只在内核或者启动代码中,需要反复使用同一个变量才会使用register变量。
全局变量
- 全局变量的定义和初始化是在main函数运行之前发生的。
跨文件的变量引用
- 用关键字extern声明一个跨文件变量
常量
- #define N 20:
-
const:const和指针结合,有四种形式:
const int *p:p是一个指针,指针指向一个int型数据。p所指向的数据是个常量。
int const *p:p是一个指针,指针指向一个int型数据。p所指向的数据是个常量。
int *const p:p是一个指针,指针指向一个int型数据。p本身是常量,p所指向的数据是个变量。
const int *const p:p是一个指针,指针指向一个int型数据。p本身是常量,p所指向的数据是个常量。
头文件的引入
- #include:用来包含系统自带的头文件。
- #include“ ”:用来包含当前目录中的头文件。
- 防止重复包含头文件
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览115566 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!