打印

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

[复制链接]
1860|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
28182900|  楼主 | 2013-2-17 15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
HWM| | 2013-2-17 15:44 | 只看该作者
数组名本就是个(常)指针,可直接引用。

使用特权

评论回复
板凳
21ID| | 2013-2-17 16:25 | 只看该作者
LZ的方法通俗易懂,个人觉得这样做可以了。

使用特权

评论回复
地板
xmar| | 2013-2-17 17:16 | 只看该作者
2楼正解。

使用特权

评论回复
5
icecut| | 2013-2-17 18:08 | 只看该作者
int idx = 1;
while(1)
{
idx ^= 1;
printf("%d", buf[idx]);
}

使用特权

评论回复
6
airwill| | 2013-2-17 19:02 | 只看该作者
在前面再加个下面的定义就清楚了
int ss1[], ss2[];

使用特权

评论回复
7
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];

使用特权

评论回复
8
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];

使用特权

评论回复
9
hjs1618| | 2013-2-17 20:52 | 只看该作者
真心学到!太棒了!都学过的知识,但使用技巧太好了!

使用特权

评论回复
10
O狂且O| | 2013-2-18 08:05 | 只看该作者
指针数组......

使用特权

评论回复
11
28182900|  楼主 | 2013-2-18 10:30 | 只看该作者
fp123123 发表于 2013-2-17 19:14
LZ的方法编译出来的代码比较大,切换2个数组还好,要是切换10几个那就太长了,可以把xx限制为0或者1,用下 ...

若直接操作数组的元素如何操作?
这样?ss[xx][0] = 1;?

使用特权

评论回复
12
sedatefire| | 2013-2-18 15:19 | 只看该作者
icecut 发表于 2013-2-17 18:08
int idx = 1;
while(1)
{

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

除非buf是个二维数组,但程序写法得改

使用特权

评论回复
13
sedatefire| | 2013-2-18 15:19 | 只看该作者
fp123123 发表于 2013-2-17 19:18
切换6个数组:

// 定义部分

不错

使用特权

评论回复
14
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]();

使用特权

评论回复
15
nongfuxu| | 2013-2-19 20:14 | 只看该作者
学习了.

使用特权

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

本版积分规则

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

100

主题

1127

帖子

2

粉丝