TIPS:一种C语言奇怪的数组引用方式

最近看到了一种奇怪的写法,例如下面的代码中:Print(L”%d “,i[segM]); 这个语句,实际上是Print(L”%d “,segM[i]) 的意思。

#include  <Uefi.h>
#include  <Library/UefiLib.h>
#include  <Library/ShellCEntryLib.h>

UINT8 segM[]={
	0xAA,0xBB,0xCC,0xDD,0xEE,0xFF
};

INTN
EFIAPI
ShellAppMain (
  IN UINTN Argc,
  IN CHAR16 **Argv
  )
{
	;
	for (UINT8 i=0;i<6;i++) {
		Print(L"%d ",i[segM]);
	}
  return(0);
}

解释说数组访问操作符 [] 是‌对称的‌,即:

a[b] == b[a]

当然了,我个人是非常不建议你在代码中使用上面的方法的。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注