学习目标
(1)指针大小。
(2)sizeof和strlen的区别。
(3)c语言中内存分配方式有几种。
(4)野指针是什么,为什么会导致野指针。
(5)数组和链表的区别。
一、指针大小
(1)指针的大小和编译器的位数有关,在32bit的系统下指针大小是4个字节,在64bit的系统下指针大小是8字节。
(2)指针的大小是固定的和指针类型无关。
二、sizeof和strlen的区别
(1)sizeof是一个运算符,strlen是一个函数,包含在<string.h>中。
(2)sizeof是计算所占内存大小,strlen是计算字符串长度。
(3)字符串以' \0 ’结尾,' \0 '不需要计算长度。
三、c语言中内存分配方式有几种
(1)静态存储器分配,例如全局变量、静态变量。
(2)栈上分配,例如函数中定义的局部变量。
(3) 堆上分配,例如malloc、new。
四、野指针是什么,为什么会导致野指针
(1)野指针是指向不可用内存的指针。
(2)当指针被创建时,没有赋值这个时候指针就成了野指针。
(3)当指针被free或delete后,如果没有吧指针赋值为NULL,这个时候也为野指针。
(4)当指针越界的时候也为野指针。
五、数组和链表的区别
(1)数组的地址空间是连续的,链表的地址空间是不连续的。
(2)数组的访问速度比较快,数组直接通过下标访问;访问链表的时候需要遍历链表。
(3)链表的增删改查速度比数组快。