免费注册 查看新帖 |

Chinaunix

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

求解 结构体指针引用混乱原因 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-24 09:22 |只看该作者 |倒序浏览
给结构体赋值后,再引用该结构体,为什么值不对
  1. #include <stdio.h>

  2. struct ball
  3. {
  4. unsigned int number;
  5. char *color;
  6. };

  7. void main( void )
  8. {
  9.   struct ball balls[4];
  10.   struct ball *p = balls;
  11.   int i = 0;

  12.   for( ; i < 4; i++ )
  13.    {
  14.     p->number = i;
  15.     p->color = "red";

  16.     if( i ==3 )
  17.      {
  18.        p->color = "blue";
  19.      }
  20.     printf("====== number: %d\n",p->number);
  21.     printf("====== color %s\n",p->color);

  22.    }

  23.   i = 0;
  24.   p = balls;
  25.   for( ; i < 5; i++ )
  26.    {

  27.      printf("%d %o %d \n",i,p,p->number );
  28.      p++;

  29.    }

  30.   getchar();

  31. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-11-24 09:54 |只看该作者
回复 1# zkf53064


    void main( void )

{

  struct ball balls[4];

  struct ball *p = &balls[0];

  int i = 0;



  for( ; i < 4; i++ )

   {

    p->number = i;

    p->color = "red";



    if( i ==3 )

     {

       p->color = "blue";

     }

    printf("====== number: %d\n",p->number);

    printf("====== color %s\n",p->color);

p++;  //你没有p++怎么赋值呢?

   }



  i = 0;
  //p = balls;
//这个习惯是最坏的了


  p = &balls[0];

  for( ; i < 5; i++ )

   {



     printf("%d %o %d \n",i,p,p->number );

     p++;



   }



  getchar();



}

论坛徽章:
0
3 [报告]
发表于 2011-11-24 10:00 |只看该作者
哦,
是这样子,
又是不细心呀
谢谢

数组名不是数组首元素的地址么
这个为什么是坏习惯?

论坛徽章:
0
4 [报告]
发表于 2011-11-24 10:10 |只看该作者
回复 3# zkf53064

1.

int a[10];

只是说数据名称a的值

&a[0]的值相等

并不是说 a的意义就是&a[0]


2.

一段好的代码

必须具备一个特点就是

释意清楚

你那个不如

p=&a[0]来的清楚

论坛徽章:
0
5 [报告]
发表于 2011-11-24 10:22 |只看该作者
的确是没有写明来的清楚直白
受教了

论坛徽章:
0
6 [报告]
发表于 2011-11-24 10:37 |只看该作者
  //p = balls;
//这个习惯是最坏的了
keytounix 发表于 2011-11-24 09:54

我觉得这样写很好啊。很简洁。大家都知道是什么意思。

论坛徽章:
0
7 [报告]
发表于 2011-11-24 10:44 |只看该作者
是简洁
可是不直白呀

像我这样的新手看到的话就要疑问了

虽然写法不简洁,有点笨 但看起来放心,直白

我觉的还是采用这种写法

论坛徽章:
0
8 [报告]
发表于 2011-11-24 10:46 |只看该作者
问题结束
{:3_182:}

论坛徽章:
0
9 [报告]
发表于 2011-11-24 18:41 |只看该作者
回复 6# digdeep126


    你当然一看就懂了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP