目录
一个十六进制的数字需要四个二进制位
指针大小:32位:四字节,64位:8字节
指针类型的意义:
1.决定了指针解引用的权限有多大(整形int四个字节,字符char一个字节,double八个字节)
2.决定了指针一步走多远即步长(整形int一步四个字节,字符char一步一个字节,double一步八个字节)
+多少与指向的对象无关,与类型有关(int char double)
野指针(指针指向的位置是随机的、不可知的、无明确限制的)
成因
1.指针变量未初始化
2.指针越界访问
3.指针指向的空间释放
如何避免
1.指针初始化
①不知道应该初始化为什么的时候,初始化为NULL②明确知道初始化的值
2.小心指针越界
3.指针指向空间释放后及时置空
4.指针使用之前检查有效性(判断是否为空指针)
指针运算
指针-指针=两个指针之间的元素个数(前提:两个指针指向同一个空间)
//指针相减求字符串长度
int my_len(char* str) {
char* start = str;
while (*str != '\0') {
str++;
}
return str - start;
}
int main() {
/*int arr[10] = { 21,2,3,34,5,6,7,8,9,50 };
printf("%d\n", &arr[9] - &arr[0]);*/
int len = my_len("hdgjasdgka");
printf("%d", len);
return 0;
}
指针+指针:无意义
指针与数组:
二级指针(下图ppa)**ppa=a
指针数组
int arr[10]——整型数组
char ch[5]——字符数组
int* parr[5]
char *pch[10]