【发布时间】:2014-11-05 20:03:13
【问题描述】:
假设我们有以下代码:
typedef struct
{
int a1;
int a2;
} a_struct;
int prev (int a2)
{
int* p = &A_STRUCT-4;
return *p;
}
int main(void)
{
a_struct aStruct[] = {5, 10}; // Array-type initializing
printf("aStruct.a1 = %i", prev(aStruct->a2));
return 1;
}
我试图通过访问aStruct.a2 内存地址并取消引用它来访问aStruct.a1 的值,但是按照这种方式,它会导致u/b 和运行时复杂化。
一言以蔽之,行不通。我做错了什么?
【问题讨论】:
-
它不可靠,但如果你打电话给
prev(&aStruct->a2)并写int prev(int *a2) { int *p1 = a2 - 1; return *p1; }它应该可以工作。给定一个指向prev()的非指针参数,您无能为力。
标签: c pointers memory-management data-structures