int *与char *的本质有何区别?

发布于 2022-10-15 08:40:50 字数 124 浏览 35 评论 0

int *a是定义一个指向int型的变量
char *b是定义一个指向char型的变量
如果变量的地址都是4位,那么这里到底有何区别?莫非指针变量还包含类型的一个属性(a包含一个int型的属性,b包含一个char型的属性)?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

亽野灬性zι浪 2022-10-22 08:40:50

int *a是定义一个指向int型的变量
char *b是定义一个指向char型的变量
如果变量的地址都是4位,那么这里到 ...
光速 发表于 2011-04-25 09:32

   *a是一个int,*b是一个char
  a+1是a地址加上一个sizeof(int)
  b+1是b地址加上一个sizeof(char)

花开浅夏 2022-10-22 08:40:50

本质没区别。
就是一坨屎,你看认为是一坨屎,屎壳郎认为是一顿美餐,实质没有改变。

峩卟喜欢 2022-10-22 08:40:50

char*与int*不是同一种类型。

类型定义了数据的取值集合与加在数据上的操作的集合。char*与int*虽然前一个属性是一样的,后一个属性不同。比如同为与整数相加,两种类型对此时的加法定义是不同的。最容易看出来的不同是sizeof,如果你还记得sizeof也是一个操作符的话。

请止步禁区 2022-10-22 08:40:50

本质上无区别,都是一个机器长的地址,区别在于二楼所说的指针运算,以及让程序员好受一些

德意的啸 2022-10-22 08:40:50

回复 5# txdgtwpv

    嗯!纯粹地址的话,都是4位.
要是进行运算的话,就有点区别.

千里故人稀 2022-10-22 08:40:50

可以理解为包含属性, 声明的时候就有说啊...

涉及到区分指针类型的时候, 编译器会去看声明的

洛阳烟雨空心柳 2022-10-22 08:40:50

一樣,看你使用時候是*int還是*char呢。

氛圍 2022-10-22 08:40:50

char*与int*不是同一种类型。

类型定义了数据的取值集合与加在数据上的操作的集合。char*与int*虽然前一 ...
tempname3 发表于 2011-04-25 09:48

    sizeof(char*) 和sizeof(int*)是一样大的。

  1. int main()
  2. {
  3.         int i,a = 10;
  4.         int  *p_int  = &a;
  5.         char *p_char = (char*)&a;
  6.        
  7.         printf( "2进制p_int :" );
  8.         for( i = 31; i >= 0; i-- )
  9.                 printf( "%d ", (int)p_int & ( 1 << i ) );
  10.         printf( "\n" );
  11.         printf( "2进制p_char:" );
  12.         for( i = 31; i >= 0; i-- )
  13.                 printf( "%d ",  (int)p_char & ( 1 << i ) );
  14.         printf( "\n" );
  15.         return 0;
  16. }
  17. 运行结果是一样的。

复制代码数据类型确实是不同的,取值的时候应该是编译器识别然后分类取不同长度吧?

     不知道说的对不对。
     编译原理没学过,以后有时间再学。

月棠 2022-10-22 08:40:50

回复 9# cokeboL

sizeof那个,迷离了,想成指针和数组了。。。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文