打印

C语言的表是不是就是数组?

[复制链接]
2799|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zyf部长|  楼主 | 2012-9-11 19:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zyf部长|  楼主 | 2012-9-11 19:10 | 只看该作者
C语言中能用查表方式访问数据么?

使用特权

评论回复
板凳
kangzj| | 2012-9-11 19:14 | 只看该作者
查表方式双IO口流水灯(C51)
#include <reg51.h>   
   
#define uchar unsigned char   
#define uint unsigned int   
   
void delay_ms(uchar ms); // 延时毫秒@12M,ms最大值255   
   
uint state[16] = {0xfffe, 0xfffd, 0xfffb, 0xfff7, //状态表   
                  0xffef, 0xffdf, 0xffbf, 0xff7f,   
                  0x7fff, 0xbfff, 0xdfff, 0xefff,   
                  0xf7ff, 0xfbff, 0xfdff, 0xfeff};   
   
void main()   
{   
    uchar i;   // 循环控制变量,兼有变址作用   
        
    while(1)   
    {   
        for(i = 0; i < 16; i++)   
        {   
            P2 = state[i] / 256;   // 查表将高字节送入P2口   
            P0 = state[i] % 256;   // 查表将低字节送入P0口   
            delay_ms(100);         // 延时100ms   
        }   
    }   
}   
void delay_ms(uchar ms)   
{   
    uchar i;   
    while(ms--)   
        for(i = 0; i < 124; i++);   
}

使用特权

评论回复
地板
小小猫咪| | 2012-9-11 19:15 | 只看该作者
C中的数组就相当于汇编查表,不过注意声明数组的时候用code关键字声明(真对KEIL C51),不然会将表格copy到SRAM中的。

使用特权

评论回复
5
renyaq| | 2012-9-11 19:18 | 只看该作者
那上面那段程序就没有code关键字,什么后果呢

使用特权

评论回复
6
zwll| | 2012-9-11 19:18 | 只看该作者
后果就是多浪费32字节RAM

使用特权

评论回复
7
juventus9554| | 2012-9-11 19:20 | 只看该作者
后果是表格copy到SRAM中执行。
运行结果都正确。

使用特权

评论回复
8
小小猫咪| | 2012-9-11 19:21 | 只看该作者
用到给定值的数组,使用CODE放到ROM里面,51的内部RAM小,很容易会不够用的

使用特权

评论回复
9
zwll| | 2012-9-11 19:23 | 只看该作者
以前还没注意到这个问题

使用特权

评论回复
10
zyf部长|  楼主 | 2012-9-11 19:23 | 只看该作者
看来我想的太简单了,算了,结贴了

使用特权

评论回复
11
wjzx111056| | 2012-9-11 20:30 | 只看该作者
LZ,你说反了吧!应该问C语言中的数组是不是就是表?这个答案是肯定的,在C语言操作数组就像是在汇编中操作表一样。但是,严格的讲,C中的数组,仅仅是地址排列在一起的元素而已,不管是char、int还是复杂的struct数组,,仅仅是排列在一起的该类型大小的内存而已。数组的下标引用,仅仅是指针偏移的一种易读的形式!也可以说,数组在C中只是一个名字,简称而已。

使用特权

评论回复
12
happybird21| | 2012-9-11 21:44 | 只看该作者
楼上说的对,就是个表,不过一般ram内存是很小的,不太建议直接用表存储大量数据

使用特权

评论回复
13
yy251745080| | 2012-9-11 22:02 | 只看该作者
概念性的东西。

使用特权

评论回复
14
hawksabre| | 2012-9-15 20:27 | 只看该作者
不建议使用太大的数组   这样会只能占用单片机有限的RAM   使用小型数组时  可以提高运算速度   这个看个人了

使用特权

评论回复
15
爱之翼V| | 2012-9-18 12:38 | 只看该作者
是数组啊,最好用来储存少量数据

使用特权

评论回复
16
figo20042005| | 2012-9-18 18:01 | 只看该作者
C语言的数组和汇编查表是一样的

使用特权

评论回复
17
credit| | 2012-9-19 17:01 | 只看该作者
:)学习学习

使用特权

评论回复
18
51xlf| | 2012-9-19 21:12 | 只看该作者
必然不能这么任务,链表是有头尾的!

使用特权

评论回复
19
51xlf| | 2012-9-19 21:12 | 只看该作者
必然不能这么任务,链表是有头尾的!

使用特权

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

本版积分规则

694

主题

7102

帖子

8

粉丝