int *与char *的本质有何区别?
int *a是定义一个指向int型的变量
char *b是定义一个指向char型的变量
如果变量的地址都是4位,那么这里到底有何区别?莫非指针变量还包含类型的一个属性(a包含一个int型的属性,b包含一个char型的属性)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
int *a是定义一个指向int型的变量
char *b是定义一个指向char型的变量
如果变量的地址都是4位,那么这里到底有何区别?莫非指针变量还包含类型的一个属性(a包含一个int型的属性,b包含一个char型的属性)?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(9)
*a是一个int,*b是一个char
a+1是a地址加上一个sizeof(int)
b+1是b地址加上一个sizeof(char)
本质没区别。
就是一坨屎,你看认为是一坨屎,屎壳郎认为是一顿美餐,实质没有改变。
char*与int*不是同一种类型。
类型定义了数据的取值集合与加在数据上的操作的集合。char*与int*虽然前一个属性是一样的,后一个属性不同。比如同为与整数相加,两种类型对此时的加法定义是不同的。最容易看出来的不同是sizeof,如果你还记得sizeof也是一个操作符的话。
本质上无区别,都是一个机器长的地址,区别在于二楼所说的指针运算,以及让程序员好受一些
回复 5# txdgtwpv
嗯!纯粹地址的话,都是4位.
要是进行运算的话,就有点区别.
可以理解为包含属性, 声明的时候就有说啊...
涉及到区分指针类型的时候, 编译器会去看声明的
一樣,看你使用時候是*int還是*char呢。
sizeof(char*) 和sizeof(int*)是一样大的。
复制代码数据类型确实是不同的,取值的时候应该是编译器识别然后分类取不同长度吧?
不知道说的对不对。
编译原理没学过,以后有时间再学。
回复 9# cokeboL
sizeof那个,迷离了,想成指针和数组了。。。。。