流行语 发表于 2014-6-28 18:22:10

为什么不用整型变量存储地址,而要发明指针变量

牡丹花下死做鬼 发表于 2014-6-28 18:22:11

←_← 那你怎么区分这个地址对应的内存该怎么读???
比如 是整形 读四个字节以整形的方式读出来 char型就只读一个字节而且是一以ASCII(临时举个例子)的方式转成字符读出来 ....... 如果就用整形变量怎么解决这个问题???
还有 整形变量可以直接 赋值的 这个是必须的 但是如果像你这么(ˇˍˇ) 想~直接用整形变量代替指针那就会很危险 你岂不是可以直接定位到某段内存了 C已经够强大了但也还没强大到可以直接这样定位 毕竟这太危险了

仰望天上的光 发表于 2014-6-28 18:38:56

为了强调该变量里存储的不是一般的整数。其实,你完全可以用int类型存储地址,在用强制类型转换的前提下,只要你清楚你正在做什么,没有什么是不能做的。

戏++ 发表于 2014-6-28 19:45:33

指针包含了俩方面,1,地址,2,类型
整形只能保存地址值,但是编译器不知道你这个整形是地址,还是具体的某个变量的值,分不清

指针编译器一看到,通过指针类型知道指针所指向内存的大小,
通过地址知道在内存的位置,这样就可以找到这块内存了

AepKill 发表于 2014-6-28 19:57:39

汇编正是这样做的,都是dword。

rhwcl 发表于 2014-6-28 22:37:02

我也刚刚学指针,指针和整型其实差不多,但指针更加灵活,比如指针变量可以根据++自动计算内存地址,而整型,如果你计算内存地址,还要考虑每个类型的长度,岂不是很麻烦,指针虽然刚刚学有点乱,但绝对比整型好用,不容易出错。人家既然发明出来了,自然有它存在的价值,只是我们还没领悟而已,小甲鱼老师都说了,指针是C语言的精髓,慢慢学吧。

oggplay 发表于 2014-6-28 23:05:43

My input method does not work.
Int is 4 bytes and pointer is the same in X86,but now pointer is 8 bytes in X86_64 system!

流行语 发表于 2014-6-30 12:48:04

谢谢你们{:1_1:}

一步之遥 发表于 2017-9-24 11:31:56

学习
页: [1]
查看完整版本: 为什么不用整型变量存储地址,而要发明指针变量