-
int整形 float带小数 char字符
-
& 取地址符号(变量名所代表的变量内存地址)
-
*取内容符号(内存地址中的数据),只有在定义一个指针变量时,作为指针的标识符
-
函数在被调用时才会在内存里有空间
-
switch选择里 字符用单引号 ‘A’
-
int指针偏移占四个字节 char指针偏移占一个字节
-
数组的[]只有在定义一个数组时,才表示数组大小,其余是都表示下标
-
数组元素个数=数组总大小/一个数组类型的大小 sizeof()
-
形式参数中,中括号中数组的大小是无效的,仅用4个字节表示一个地址(Linux64中用8个字节)
-
实际参数中 数组当作参数,传递的是数组的首地址(可以用第一个数组元素的地址或数组名表示)
-
变量的访问有两种方式:1.变量名 2.地址(指针)
-
%p 16进制输出数据(通常用来打印地址)| %s 字符串|%c 字符
-
指针=地址
-
++i 加完再读i i++ 先读i再加
-
指针的作用:1.数组 2.强制保存指定地址 3.便于多线程操作
-
volatile 每一次读取都从 内存读取(确保数据准确)
-
指针数组,多个指针,数组中的每一项都是一个指针变量
-
数组指针,一个指针,指向一个数组的指针,强调的是类型,数组的个数,偏移值是整个数组长度
-
void* malloc(size_t size); 返回无类型的指针 要用头文件 <stdlib.h>
-
内存泄漏:程序刚跑起来 ok,跑一段时间程序崩溃(主要原因:每隔一段时间malloc,malloc申请的空间,程序不结束,就不会主动释放)避免:1.检查代码中有没有一直申请mallo2.及时合理释放 free§;p=NULL; free只能free malloc出来的东西
-
字符串在内存中,除了有效字符外,还会自动在后面补一个’\0’,作为字符串的结束标识
-
不能用sizeof来计算字符串中有效字符的个数 要用strlen(遇到’\0’后,就结束计数)
-
一旦用malloc,一定要注意内存泄漏问题;malloc可能会失败,要对返回值进行判断
-
野指针 造成非法内存访问 会出现段错误 cmd窗口闪退
-
字符串常用函数 1.输出字符串puts() printf("%s",p);2.获取字符串gets() scanf("%s",p);3.计算长度strlen;4.初始化memset;5.拷贝strcpy strncpy;6.拼接strcat;7.比较strcmp;8.查找strchr strstr ;9.字符串分割strtok;10.转为小写的函数strlwr11.转为大写的函数strupr
-
结构体关键字struct A{};
-
在C语言中 字符串只能通过 strcpy 进行赋值
-
用结构体指针,要用->访问结构体中的变量;非指针时用 .
-
指针++,不是单纯的加一,而是偏移了其指向空间的大小:int(4);char(1);float(4);double(8)
-
链表一种数据存放的思想 灵活 增删改查
-
链表的头是最重要的
-
链表的动态创建:头插法 尾插法
int x;
int *y;
scanf("&d",&x);
scanf("&d",y);
int *p[3];//指针数组
int (*p)[3];//数组指针
int *array = (int *)malloc(n*sizeof(int));