指针

GuaGuaJinDie 2019-11-21 09:03:47
请问char*p=NULL 和int*p=NULL有什么区别
...全文
55 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
apkipa1 2019-11-24
  • 打赏
  • 举报
回复
都是空指针,不过指向的类型不一样,一个是 char, 一个是 int。
lin5161678 2019-11-23
  • 打赏
  • 举报
回复
引用 6 楼 Donald_Shallwing 的回复:
指针的本质都是地址,而地址都是一个整型的数,所以任何指针实际上都是只是一个整型的数; 指针的类型决定了指针所操作的那片空间的大小,而所有类型指针在运行时所占用的空间是一样的,与计算机的地址编址方式有关,与操作的变量无关。
对象这种可以这样说 函数指针不是
Donald_Shallwing 2019-11-23
  • 打赏
  • 举报
回复
char *p表示此时指针p操作的空间的大小是一个bytes,int *p表示此时指针p操作的空间是4个bytes的大小
Donald_Shallwing 2019-11-23
  • 打赏
  • 举报
回复
指针的本质都是地址,而地址都是一个整型的数,所以任何指针实际上都是只是一个整型的数; 指针的类型决定了指针所操作的那片空间的大小,而所有类型指针在运行时所占用的空间是一样的,与计算机的地址编址方式有关,与操作的变量无关。
pro_or_check 2019-11-21
  • 打赏
  • 举报
回复
在计算p+1的时候,不一样。 printf %p p+1
千梦一生 2019-11-21
  • 打赏
  • 举报
回复
char*p1=NULL
int*p2=NULL
//首先p1、p2是两个变量。
//因为他们都是指针类型。所以他们本身占4字节(其实与环境、编译器的设置等等相关。不过这里暂时不用多虑,没有特别强调的情况下一般你就认为是32位/4字节就够了)。也就是在内存的某一处有4个字节存放p1的值(其本体)。某一处存放有p2的值(其本体)。
这里先打个比方,我把这p1、p2比喻为目录中的某两条目录
//上面说到的值是什么?是地址(因为是指针),也就是上面的两条目录写在后面的页数(比如:p1-32页。p2-86页)。让你根据页数去找到你想要的东西。
//那么char* 和int*又有什么区别呢? char* p1是告诉你,32页开始共1页(字节)是你需要的。int*p2是告诉你86页开始共4页(字节)是你需要的
//最后废话一句。是你定义的指针类型。意味着告诉编译器。去哪里,取多少容量的数据
千梦一生 2019-11-21
  • 打赏
  • 举报
回复

char*p1=NULL
int*p2=NULL
//首先p1、p2是两个变量。
//因为他们都是指针类型。所以他们本身占4字节(其实与环境、编译器的设置等等相关。不过这里暂时不用多虑,没有特别强调的情况下一般你就认为是32位/4字节就够了)。也就是在内存的某一处有4个字节存放p1的值(其本体)。某一处存放有p2的值(其本体)。
这里先打个比方,我把这p1、p2比喻为目录中的某两条目录
//上面说到的值是什么?是地址(因为是指针),也就是上面的两条目录写在后面的页数(比如:p1-32页。p2-86页)。让你根据页数去找到你想要的东西。
//那么char* 和int*又有什么区别呢? char* p1是告诉你,32页开始共1页(字节)是你需要的。int*p2是告诉你86页开始共4页(字节)是你需要的
//最后废话一句。是你定义的指针类型。意味着告诉编译器。去哪里,取多少容量的数据

chris_ter 2019-11-21
  • 打赏
  • 举报
回复
个人鄙见: 看到一个指针要想到: 1:指针指向的类型 2:指针的类型 3:指针指向的内存区域(指针的值) 4:指针本身所占据的内存区 仅供参考。
自信男孩 2019-11-21
  • 打赏
  • 举报
回复
类型不一样,指向的内容长度不一样(p+1偏移的字节数);
最好自己写个简单程序熟悉一下,把地址和位置偏移长度打印出来,这样更好的了解他们的区别~

69,364

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧