C语言核心知识点相关总结

extern 可以置于变量或者函数前面,提示编译器遇到这个变量或者函数的时候,在其他/当前模块里寻找。不妨看看更多C语言核心知识点,以下仅供参考!

C语言核心知识点相关总结

extern int a; // b.c 有个全局变量a,那么可以在a.c里声明这个a,然后拿过来用,但是并不代表我重新定义了一个a

extern int function(int a, double b, char c);

// 注意:函数在进行声明的时候,extern 是默认可以省略的。

定义:没有加上 extern 就是定义了。定义后的变量是有存储空间的,可以获取到这个变量的地址,但是不一定有值。

int a;

int arr[10];

初始化:定义变量的同时进行赋值操作。

int a = 10;

int arr[10] = { 0 };

数据类型:

在C语言里的数据类型分为四大种:

1. 基本类型

在不同平台下所占字节数:

Linux 64 Windows 64 Linux 32 Windows 32

字符: char 1 1 1 1

整型: short 2 2 2 2

int 4 4 4 4

long 8 4 4 4

long long 8 8 8 8

size_t 8 8 4 4

浮点型: float 4 4 4 4

(实型)double 8 8 8 8

构造类型

数组:存储了n个相同基本类型的数据,举例:sizeof(int) * n 个字节大小

char str1[5] = "haha"; // 只要用" "括起来的就是字符串,只要是字符串最后一位就是''

char str2[5] = {'h', 'a', 'h', 'a','h'};

str1[2] = 'm';

printf("%s", str1);

int iarr[5] = {1, 2, 3, 4, 5};

float farr[5] = {1.1, 2.2, 3.14,4.15, 5.001};

结构体:存储了n个可以不相同基本类型的数据 struct

联合体/共同体:存储n个可以不相同基本类型的数据,但是这种类型里的所有数据共享同一块内存空间,内存大小是最大的那个数据类型大小 union

枚举:存储了n个相同基本类型的数据,但是使用的时候只能取其中一个值,内存大小是 sizeof(int); enum

指针类型

32位占4个字节,64位占8个字节

int *p; // 指针类型变量p就是用来存储地址的,定义指针时候的数据类型,代表这个指针指向的.内存空间里存储的值的类型

int a = 10;

p = &a;

*p = 20;

printf("%d", a);

char *str = "haha"; // char *str 和 char str[5] 都是存储字符串,但是str是一个指针,str是一个数组名

printf("%s", str); // char str[5] 存储的"haha"是在栈区, char *str 指向的"haha" 是在常量区,str存储的是这个字符串在常量区的首地址。

*(str + 1) = 'm'; // 错误!! 因为str里的内容保存在常量区,所以里面的值不可以修改。

4. 空类型

void 变量 :意思是空类型变量,不接受任何数据

void 函数 :意思是该函数没有返回值

void 指针 :意思是可以接收任何其他类型的指针