世俱杯 2025

登录 免费注册 世俱杯 2025 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

c51中指针数组的问题--请教

作者:hopeasy 栏目:嵌入式系统
c51中指针数组的问题--请教
这是一节指针数组的问题,请教

main()
{
CHAR *ba[3],i;
    SCON  = 0x50;        //SCON: mode 1, 8-bit UART, enable rcvr     
    TMOD |= 0x20;     // TMOD: timer 1, mode 2, 8-bit reload        
    TH1   = 221;      // TH1:  reload VALUE for 1200 baud @ 16MHZ  
    TR1   = 1;        // TR1:  timer 1 run                         
    TI    = 1;        // TI:   set TI to send first CHAR of UART
    for(i=0;i<3;i++)
        *ba[i]=i+1;
    for(i=0;i<3;i++)
        printf("ba[%bd]=%bd\n",i,ba[i]);
    while(1);
}

这样子对数组指针所指向的内容赋值是错误的,请教为什么不能这样。

谢谢

2楼: >>参与讨论
zhjn_m
赋值过程应该是对的
你是要观察指针所指向的内容而不是地址值吧?
应该为 printf("ba[%bd]=%bd\n",i,*ba[i]);
还要初始化指针
    

* - 本贴最后修改时间:2005-3-16 10:43:51 修改者:zhjn_m

3楼: >>参与讨论
coke
用一個指針指向一個數組不就搞定了.
 
4楼: >>参与讨论
松鼠的大树
赋值确实有问题
你的程序关键的是:
main()
{
CHAR *ba[3],i;
    .
    .
    .

    for(i=0;i<3;i++)
        *ba[i]=i+1;
    for(i=0;i<3;i++)
        printf("ba[%bd]=%bd\n",i,ba[i]);
    while(1);
}

CHAR *ba[3],i; 声明了指针数组,但是数组里的三个指针没有初值,可以认为是随机数。

    for(i=0;i<3;i++)
        *ba[i]=i+1;
这里直接对指针指向的字节赋值,但是由于指针没有初始化,接受赋值的字节的地址实际上是不可知或者随机的。这种用法是错误的。


参与讨论
昵称:
讨论内容:
 
 
相关帖子
FLASH 扩展请教!
求助!——二氧化碳传感器
求助:VxWorks在DiskOnChip2000上的启动问题
PoerPC处理器的BDM调试头原理图,很多朋友没有,提供给各位!
请教:RTL8019的16K RAM怎么读写,急!谢谢!


Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号