一 指针和指针变量
指针是内存中最小单元的编号,也叫地址(口语中的指针通常指的是指针变量),地址就像访问数据的门牌号,指向内存单元,其中最小单元为一个字节(即一个字节一个地址)。通过地址可以找到存储的数据。指针变量是用来存放地址,其大小可以是4个字节或者8个字节。
二 指针类型
int*指针指向int类型
short* 指针指向short
long*指针指向long
float*指针指向float
char*指针指向char
.....................................
例如a的数据类型是整形所以用int*类型的指针变量p中存放a的地址
p中为a的地址若对a的值进行修改,用'*'字符解引用*p就指向a,即对a进行赋值。
野指针:如果该指针没有被正确初始化或已被释放,就可能导致函数内部出现野指针。野指针可能会导致程序崩溃或产生未知行为。
野指针:指针指向位置不可知
成因:
指针没有进行初始化(指针指向未知位置)
例如
int* p ;
*p=10;//此时p的位置未知
如何避免:
我们应将其进初始化 int*p=&a;或者让其等于一空指针int*p=NULL;
函数调用中可能存在野指针(指针指向内存被释放)
例如:
int test()
{
int a = 10;
return &a;
}
int main()
{
int* p =test();
printf("hehe\n");
printf("%d", *p);
return 0;
函数返还一个地址,指针已被释放,指针指向的内存部分被覆盖,导致出现野指针,不安全。
三 指针类型的意义
指针类型决定了解引用时访问几个字符;int*类型解引用时访问4个字节一个整形,char解引用时访问的字节数为1.......
指针类型决定了当指针变量+1/-1时跳过几个字节;