在以下代码中:
int main()
{
int i = 15, j = 1;
int *a[] = {&i, &j};
printf("%d", (*a)[0]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出(*a)[0]是15(i的值)但是当我试图检查(*a)[1]它时给出了一个垃圾值.我希望相同的表达式适用于数组中的所有条目,但它只适用于数组中的第一个元素.
在下面的例子中,我希望foo((&i)++)将计算为foo(4 +地址为(i)),假设int size是4 Byte但是它在此行给出了编译错误
有人有解释吗?
void foo(int*);
int main()
{
int i = 10;
foo((&i)++);
}
void foo(int *p)
{
printf("%d\n", *p);
}
Run Code Online (Sandbox Code Playgroud)