初始指针
Posted 垚垚是小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始指针相关的知识,希望对你有一定的参考价值。
指针类型
指针类型决定了指针解引用时,能访问空间的大小
int *p *p能够访问四个字节
char *p *p能够访问一个字节
double *p 访问八个字节
指针类型决定了指针走多远
int *p *p+1->走了四个字
double 八个字节
char 一个字节
野指针
指针指向的位置不可知
指针不初始化就是野指针
- 指针未初始化
#include <stdio.h>
int main()
{
int *p;//局部变量指针未初始化,默认为随机值
*p = 20;
return 0;
}
- 指针越界访问
#include <stdio.h>
int main()
{
int arr[10] = {0};
int *p = arr;
int i = 0;
for(i=0; i<=11; i++)
{
//当指针指向的范围超出数组arr的范围时,p就是野指针
*(p++) = i;
}
return 0;
}
- 指针指向的空间释放
这里放在动态内存开辟的时候讲解,这里可以简单提示一下
如何规避野指针
- 指针初始化
- 小心指针越界
- 指针指向空间释放即使置NULL
- 指针使用之前检查有效性
指针运算
指针减去指针得到的是指针之间元素的个数
# include<stdio.h>
int main() {
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\\n", & arr[9] - &arr[0]);
}
判断数组长度
# include<stdio.h>
int my_strlen(char* str) {
char* start = str;
char* end = str;
while (*end != '\\0') {
end++;
}
return end - start;
}
int main() {
//strlen求字符串长度
//递归的方式 模拟实现strlen
char arr[] = "bit";
int len = my_strlen(arr);
printf("%d\\n", len);
return 0;
}
以上是关于初始指针的主要内容,如果未能解决你的问题,请参考以下文章