打印

指针数组--在线等待

[复制链接]
1330|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eliucheng|  楼主 | 2007-9-19 09:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TI, se, IO, ST, TE
/*------------------------------------------------------------------------------
HELLO.C

Copyright 1995-1999 Keil Software, Inc.
------------------------------------------------------------------------------*/

#include <REG52.H>                /* special function register declarations   */
                                  /* for the intended 8051 derivative         */

#include <stdio.h>                /* prototype declarations for I/O functions */


#ifdef MONITOR51                         /* Debugging with Monitor-51 needs   */
char code reserve [3] _at_ 0x23;         /* space for serial interrupt if     */
#endif                                   /* Stop Exection with Serial Intr.   */
                                         /* is enabled                        */


/*------------------------------------------------
The main C function.  Program execution starts
here after stack initialization.
------------------------------------------------*/
void main (void) {

/*------------------------------------------------
Setup the serial port for 1200 baud at 16MHz.
------------------------------------------------*/
#ifndef MONITOR51
    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    */
#endif

/*------------------------------------------------
Note that an embedded program never exits (because
there is no operating system to return to).  It
must loop and execute forever.
------------------------------------------------*/
unsigned char a[][5]={
  {1,2,3,4,5},
  {6,7,8,9,10},
  {1,5,6,5,5},  
  {6,6,6,4,6}
};
unsigned char * b[][4]={ 
 {a[1],a[2],a[3],a[0]},
 {a[0],a[2],a[2],a[2]},
 {a[1],a[0],a[0],a[3]}
};



while (1) {

       
    printf ("%d",*(*b[1]));   
  }
}

这个函数能输出需要的12345156551565515655  吗?
该函数是简化版

只在了解能否通过*(*b[1])通过  数组b访问到a 中的数组   从而得到数组的任意组合     麻烦大家了
  在线等待

相关帖子

沙发
eliucheng|  楼主 | 2007-9-19 10:45 | 只看该作者

有人会吗

大哥们  讨论一下吧

使用特权

评论回复
板凳
eraychen| | 2007-9-19 12:35 | 只看该作者

可以测试一下,看起来好像不能

使用特权

评论回复
地板
古道热肠| | 2007-9-19 14:48 | 只看该作者

数据元素是指针,得试试!

使用特权

评论回复
5
原野之狼| | 2007-9-19 21:08 | 只看该作者

凑个热闹~~

看了一下,没有测试,说两句,不知道对不对?

楼主的现在的代码应该是期望输出二维数组A第0行第0列的元素吧,也就是1,这个指针访问我感觉是没有问题的。
问题是printf的用法上,“%d”格式是不对的,因为你的数组元素是unsigned char 类型。
这样改改看看。。。
1、把该变量强制转换为int型。
printf("%d",(int)());
2、做一个int的临时变量,拷贝一份。
temp=....;
printf("%d",temp);

使用特权

评论回复
6
lixun00| | 2007-9-20 08:45 | 只看该作者

只会输出1,若要得到指针。。。

先申明typedef char *k[5],然后k b[][4],%d只会输出一个值。当为指针时,输出指针所指向的地址

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

62

帖子

0

粉丝