char数组 赋值

来源:百度知道 编辑:UC知道 时间:2024/05/25 04:25:03
某位法国高人写的代码:
typedef struct PIECE
{
int width;
int height;
char *array;
} PIECE;

static PIECE pieces[7][4];

然后他这样赋值:
pieces[0][0].array="\0\1\0"
"\1\1\1";
帮忙解释一下,这是什么意思。谢谢!
麻烦大家认真看看,这段代码所在的程序确能运行,我看的一头雾水,也很郁闷

tyoukill,人家大部分代码都很清晰,你的分析倒是很不清晰,而且是错的。这是一个俄罗斯方块代码你的,我自己写了一个,找来对比的。该char数组是描述方块形状的。我知道是怎么回事了,谢谢大家!

其实这个等于没有赋值,因为pieces[0][0].array是个0长度的字符串

pieces[0][0].array="\0\1\0"
"\1\1\1";
如果他是一个char一个char的来用的话,那他就是代表 0 1 0 1 1 1应该是一个方块的图形

高人?这点我到没看出来。真正的高人写的代码可读性是非常高的。
char *array;是这个结构体的地址的作用
比如 char a[10]相当于a; (回答补充的,这个可以是这个作用,动态的数组就是这样的)

我怎么知道是俄罗斯方块代码?就算是,我也可以用别的方式来代替它,而且我保证效率不会比他这个低,而且可读性会比他高很多.我是给你回答问题的,我有我的理解,你不采纳就可以了.

可能在c语言中可以给字符指针这样赋值.
给array赋值的时候,因为遇到了\0,赋值终止,所以array的值就是"\0".

看不懂.
这样写的话,array指向了字符串常量,不能修改这个字符串的值了.

'\0'是字符串结束符,'\1'是ASCII马值为1的字符,他为什么这么用我就不知道了