阿鑫来了  

指针变量涉及的两个要素:

1.指针对应的内存地址是哪个地址(指针的值体现的)

2.这个内存地址对应的内存大小是多大(指针的类型体现的)

有一种特殊的指针,只有地址,没有内存对应的大小

void*   正因为没有限制内存大小,void*对应的内存可以是任意大小

void*不能解引用.但void*非常有用

void*相当于是把类型完全交给程序猿来控制和保证.

空指针:特殊的指针,地址是0,NULL,和void*完全不一样

空指针是一种特殊的野指针,一般不能使用,只能在使用操作系统内核时才能使用

 一个指针占多少字节?

如果是32位系统,4个字节;如果是64位系统,8个字节(一定要带系统前提)

一个int占几个字节?

如果是32位系统,4个字节;如果是64位系统,8个字节(一定要带系统前提)

看一个典型的野指针代码

#include<stdio.h>
#include<stdlib.h>

int* Func(){
    int num = 10;
    return &num;
}
int main(){
    int* p = Func();
    printf("%d\n", *p);
    system("pause");
    return 0;
}

当使用完函数之后,函数空间被释放,当你再次打印*p时,读取的地址不一定是原地址

还有什么是野指针?

例如:指针未初始化,指针越界

 

posted on 2021-03-27 22:05  阿鑫来了  阅读(51)  评论(0)    收藏  举报