免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6029 | 回复: 17
打印 上一主题 下一主题

忽然想起,指针类型与指针指向的类型有啥差别喃 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-17 15:32 |只看该作者 |倒序浏览
以这个为例:int * i;
指针类型是int *;
而指针指向的类型则是int.

第二个很好理解嘛,表示指针指向的bug类型是int型,编译器解析的时候将其中数据作为int进行解析,那第一个喃?

对于32位系统来讲,不管指针类型是啥,其大小都是4字节吧,那不同的类型有啥差别喃?

论坛徽章:
0
2 [报告]
发表于 2010-07-17 15:38 |只看该作者
指针就是个地址,不同类型的指针大小是相同的,在32位系统上就是四个字节。

不同类型的指针,区别在于如何解释这个地址的数据,比如int *,会将这个地址的数据视为int,char *会将这个地址的数据视为char。

论坛徽章:
0
3 [报告]
发表于 2010-07-17 15:50 |只看该作者
那是不是说其实那个类型就是拿来告诉编译器,用某种类型去解析指针所指向的buffer中的数据。

发现有点搅了。

论坛徽章:
0
4 [报告]
发表于 2010-07-17 15:51 |只看该作者
回复 3# magicrobot1984


   对,习惯了就不搅了~

论坛徽章:
0
5 [报告]
发表于 2010-07-17 15:53 |只看该作者
看了份资料,说起这个,越来越昏。。。杯具。。
还是表乱看了。。

论坛徽章:
0
6 [报告]
发表于 2010-07-20 10:01 |只看该作者
本帖最后由 ChiyuT 于 2010-07-20 10:03 编辑
指针就是个地址,不同类型的指针大小是相同的,在32位系统上就是四个字节。

不同类型的指针,区别在于如 ...
efolzl 发表于 2010-07-17 15:38



   
请教一下,指针都是4个字节(32位),那么通过一个指针来读取数据,所要读取的具体的字节数是保存在哪里的?

比如 char * 只需要读取一个字节,而 int * 需要读取4个字节……这些信息是如何保存的?

论坛徽章:
0
7 [报告]
发表于 2010-07-20 10:04 |只看该作者
回复 6# ChiyuT


    编译器.

论坛徽章:
0
8 [报告]
发表于 2010-07-20 10:12 |只看该作者
钱包与钱包里面装的什么币种的关系。
指针好比钱包,它的类型是固定的,就是一个整数,表示一个地址。
指针指向的类型就是钱包中装的货币,爱是啥类型是啥类型,冥币也行{:3_186:}

论坛徽章:
0
9 [报告]
发表于 2010-07-20 10:21 |只看该作者
回复  ChiyuT


    编译器.
wmmy2008 发表于 2010-07-20 10:04



  一直对结构体里边含有指向自己指针的情况感到有点儿疑惑

struct node {
         Item item;
         struct node * next;
} Node;

假设 Item 是10个字节,那么编译器在处理 next 指针的时候,仅仅需要知道 next 指针所指向的内容是 14 个字节即可吗?是否还会关心 next 所指向的具体内容?

论坛徽章:
0
10 [报告]
发表于 2010-07-20 10:51 |只看该作者
涉及编译时数据类型检查吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP