为什么不用整型变量存储地址,而要发明指针变量
←_← 那你怎么区分这个地址对应的内存该怎么读???比如 是整形 读四个字节以整形的方式读出来 char型就只读一个字节而且是一以ASCII(临时举个例子)的方式转成字符读出来 ....... 如果就用整形变量怎么解决这个问题???
还有 整形变量可以直接 赋值的 这个是必须的 但是如果像你这么(ˇˍˇ) 想~直接用整形变量代替指针那就会很危险 你岂不是可以直接定位到某段内存了 C已经够强大了但也还没强大到可以直接这样定位 毕竟这太危险了 为了强调该变量里存储的不是一般的整数。其实,你完全可以用int类型存储地址,在用强制类型转换的前提下,只要你清楚你正在做什么,没有什么是不能做的。 指针包含了俩方面,1,地址,2,类型
整形只能保存地址值,但是编译器不知道你这个整形是地址,还是具体的某个变量的值,分不清
指针编译器一看到,通过指针类型知道指针所指向内存的大小,
通过地址知道在内存的位置,这样就可以找到这块内存了
汇编正是这样做的,都是dword。 我也刚刚学指针,指针和整型其实差不多,但指针更加灵活,比如指针变量可以根据++自动计算内存地址,而整型,如果你计算内存地址,还要考虑每个类型的长度,岂不是很麻烦,指针虽然刚刚学有点乱,但绝对比整型好用,不容易出错。人家既然发明出来了,自然有它存在的价值,只是我们还没领悟而已,小甲鱼老师都说了,指针是C语言的精髓,慢慢学吧。 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! 谢谢你们{:1_1:} 学习
页:
[1]