一个指针如何在两个数组之间切换?

[复制链接]
2241|14
 楼主| 28182900 发表于 2013-2-17 15:08 | 显示全部楼层 |阅读模式
最简便方法。。
先上我的
    if(xx){      
      x = ss1;   
    }
    else{
      x= ss2;         
    }
HWM 发表于 2013-2-17 15:44 | 显示全部楼层
数组名本就是个(常)指针,可直接引用。
21ID 发表于 2013-2-17 16:25 | 显示全部楼层
LZ的方法通俗易懂,个人觉得这样做可以了。
xmar 发表于 2013-2-17 17:16 | 显示全部楼层
2楼正解。
icecut 发表于 2013-2-17 18:08 | 显示全部楼层
int idx = 1;
while(1)
{
idx ^= 1;
printf("%d", buf[idx]);
}
airwill 发表于 2013-2-17 19:02 | 显示全部楼层
在前面再加个下面的定义就清楚了
int ss1[], ss2[];
fp123123 发表于 2013-2-17 19:14 | 显示全部楼层
本帖最后由 fp123123 于 2013-2-17 19:16 编辑

LZ的方法编译出来的代码比较大,切换2个数组还好,要是切换10几个那就太长了,可以把xx限制为0或者1,用下面的代码会好一些,切换2个和10几个的代码都是一样

// 定义部分
char ss1[] = { 数组1的定义 };
char ss2[] = { 数组2的定义 };
char *ss[] = { ss1, ss2 };

// 程序使用部分,xx = 0/1, 不需要if else判断
char *x = ss[xx];

评论

厉害啊,我试试  发表于 2013-2-18 10:02
fp123123 发表于 2013-2-17 19:18 | 显示全部楼层
切换6个数组:

// 定义部分
char ss1[] = { 数组1的定义 };
char ss2[] = { 数组2的定义 };
char ss3[] = { 数组3的定义 };
char ss4[] = { 数组4的定义 };
char ss5[] = { 数组5的定义 };
char ss6[] = { 数组6的定义 };
char *ss[] = { ss1, ss2, ss3, ss4, ss5, ss6 };

// 程序使用部分,xx = 0 - 5, 不需要if else判断
char *x = ss[xx];

评论

你太流弊了  发表于 2013-2-18 16:39
hjs1618 发表于 2013-2-17 20:52 | 显示全部楼层
真心学到!太棒了!都学过的知识,但使用技巧太好了!
O狂且O 发表于 2013-2-18 08:05 | 显示全部楼层
指针数组......
 楼主| 28182900 发表于 2013-2-18 10:30 | 显示全部楼层
fp123123 发表于 2013-2-17 19:14
LZ的方法编译出来的代码比较大,切换2个数组还好,要是切换10几个那就太长了,可以把xx限制为0或者1,用下 ...

若直接操作数组的元素如何操作?
这样?ss[xx][0] = 1;?
sedatefire 发表于 2013-2-18 15:19 | 显示全部楼层
icecut 发表于 2013-2-17 18:08
int idx = 1;
while(1)
{

这个只在0 1间切换
可不是“两个数组”哦

除非buf是个二维数组,但程序写法得改
sedatefire 发表于 2013-2-18 15:19 | 显示全部楼层
fp123123 发表于 2013-2-17 19:18
切换6个数组:

// 定义部分

不错
fp123123 发表于 2013-2-18 19:59 | 显示全部楼层
28182900 发表于 2013-2-18 10:30
若直接操作数组的元素如何操作?
这样?ss[xx][0] = 1;?

是的,可以这样操作

再扩展一下,用这个方法来调用函数,可以省掉很多if或者case,程序更小,速度也更快

// 程序定义
typedef void (*Cmd)();

void cmd1();
void cmd2();
void cmd3();
void cmd4();
void cmd5();
void cmd6();

Cmd function[] = {
  cmd1,
  cmd2,
  cmd3,
  cmd4,
  cmd5,
  cmd6
};

// 程序使用 char command = 0 - 5
function[command]();

评论

流弊啊。。加我扣扣大士  发表于 2013-2-19 09:11
nongfuxu 发表于 2013-2-19 20:14 | 显示全部楼层
学习了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:工作永远干不完,生命却一直在倒计时

100

主题

1127

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部