enjoyC

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

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  阿鑫来了  阅读(20)  评论(0编辑  收藏  举报

分类:

技术点:

相关文章:

  • 2022-01-21
  • 2021-11-18
  • 2021-11-18
  • 2021-06-15
  • 2022-12-23
  • 2021-11-18
  • 2021-11-18
  • 2021-11-18
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-02
  • 2021-11-18
  • 2021-11-18
  • 2021-08-15
  • 2021-07-17
相关资源
相似解决方案