一:野指针
1:指针未初始化:
#include<stdio.h>
int main()
{
int* p;//局部变量未初始化,则被认为是随机值
*p = 20;
return 0;
}
2:越界访问
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
int* p = arr;
for (int i = 0; i <= 20; i++)//超出了arr的范围,称为野指针
{
//*p++;
*p = i;
p++;
}
return 0;
}
3:访问错误,取缔地址
#include<stdio.h>
test()
{
int a = 10;
return &a;
}
int main()
{
int* p = test();
printf("%d", p);
return 0;
}
int* pa = NULL//空指针
//*是解引用的意思
二:指针运算:
指针+-整数:
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//初始化数组
int sz = sizeof(arr) / sizeof(arr[0]);
int* p = arr;//int* p = &arr[9]
for (int i = 0; i < sz; i++)//for 表示for循环,循环多少次,与下面的变量无关
{
printf("%d", p);//p输出的是p的地址,*p输出的是1 2 3 4 5 6 7 8 9 10
p = p + 1;//不需要再加*了,可直接引用p
}
return 0;
}
指针-指针————输出元素个数,同种类型
#include<stdio.h>
int main()
{
int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//初始化数组
printf("%d",&arr[9]-&arr[0]);//输出9,
return 0;
}
指针的关系运算(比较大小)
标签:10,arr,20,int,C语言,return,main,指针 From: https://blog.51cto.com/u_15981668/6575946