浅谈C语言的基础知识

浅谈C语言中的基础知识

C语言中的基本数据类型

char:字符
int:整型
short int :短整型
long int:长整型
float:单精度
double:双精度
电脑64位中,各类型所占字节数
浅谈C语言的基础知识_第1张图片
然而,在此基础上增添了无符号及有符号的整型;
有无符号位主要是影响数值的范围,如
有符号: int;//-2^31 ~ 2^31 -1
无符号: unsigned int;//0 ~ 2^32 -1
#float及double总是带符号位的

其中uint8_t/uint16_t/uint32_t/uint64_t并不是新的数据类型,只是经过typedef封装过的组合类型。

C语言中的存储类型

堆区:动态内存分配;
栈区:编译器自动分配释放,存放函数的参数值、返回值及局部变量等。

auto:
自动类型,标识该局部变量存储在正在运行的进程栈区域,若该变量没有初始化,则系统自动赋予随机值,生存周期为创建到函数结束。

register:
该关键字只能用于局部变量,而且该变量只能是整型及字符型,运行期间数据调入到寄存器中处理,能够较大程度地提高效率。

static:
静态的,可标识变量亦可标识函数,定义的变量存储在数据区,若定义变量没有初始化,则自动初始化为0,生命周期为整个程序。

extern:
该关键字可标识变量,亦可标识函数。全局变量和静态变量只能被初始化一次,定义的变量存储在数据区,且若该变量定义在头文件中,则引用该头文件的其他文件只为其分配一次内存空间。对于函数而言,默认的存储方式为entern。

C语言中的动态内存申请

静态分配:编译器在编译程序源代码时分配。
动态内存:程序在执行时调用malloc()库函数分配。

动态内存申请
①malloc()
中分配一个长度为size字节的连续空间,并返回一个指向所分配的连续存储首地址的指针。
②realloc()
extern void *realloc(void *p, size_t size);
p为更改内存大小的原空间位置,size为新的内存大小。
③calloc()
malloc函数的简单包装,优点为动态分配的内存初始化为0,语法与malloc()类似。
④alloca()
alloca函数用来在中分配size个字节的内存空间,并且在函数返回时自动释放该内存空间。

你可能感兴趣的:(嵌入式)