我试图绕过指向指针的指针。我对此感到困惑
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]
返回一个地址。那么为什么这会混淆