【发布时间】:2013-07-17 01:21:01
【问题描述】:
我试图绕过指向指针的指针。我对此感到困惑
int syntax_error(int num) {
cout << num << endl;
static char *err[] = {
"Cannot open\n",
"I can open\n",
"Sorry\n",
"Thank you\n"
};
printf("%s", err[num]);
cout<<"&err[num][1]"<<" "<<&err[num][1]<<endl;
cout<<"&err[num]"<<" "<<&err[num]<<endl;
cout<<"err[num][1]"<<" "<<err[num][1]<<endl;
cout<<"*err[num]"<<" "<<*err[num]<<endl;
return 0;
}
假设 num = 3。然后产生以下输出
Thank you
&err[num][1] hank you
&err[num] 0x8049ca4
err[num][1] h
*err[num] T
我读到& 运算符指的是它所指的指针的地址。这里不应该返回 err[num][1] 的地址,而不是从那里存储到最后的地址。另一方面,&[num] 正在返回地址。我在这里很困惑。如果有人可以提供帮助,将不胜感激。
问题重新编辑:
& 运营商应参考地址。所以&err[num][1] 应该返回一个地址。这里它给出了从err[3][1] 开始的字符串。另一方面,&err[num] 返回一个地址。那么为什么会混淆
【问题讨论】:
-
请重新提出您的问题!
-
其实当
num为2时,printf("%s", err[num]);会打印Sorry而不是Thank you。 -
@AnnieKim 对不起。我的意思是 num = 3