|
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
c51中指针数组的问题--请教 |
作者:hopeasy 栏目:嵌入式系统 |
这是一节指针数组的问题,请教 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 于 2005/3/16 10:29:00 发布:
赋值过程应该是对的 你是要观察指针所指向的内容而不是地址值吧? 应该为 printf("ba[%bd]=%bd\n",i,*ba[i]); 还要初始化指针 * - 本贴最后修改时间:2005-3-16 10:43:51 修改者:zhjn_m |
3楼: | >>参与讨论 |
作者: coke 于 2005/3/16 14:04:00 发布:
用一個指針指向一個數組不就搞定了. |
4楼: | >>参与讨论 |
作者: 松鼠的大树 于 2005/3/18 10:46:00 发布:
赋值确实有问题 你的程序关键的是: 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; 这里直接对指针指向的字节赋值,但是由于指针没有初始化,接受赋值的字节的地址实际上是不可知或者随机的。这种用法是错误的。 |
|
|
Copyright © 1998-2006 tgdrjb.cn 浙ICP证030469号 |