我是C的绝对新手所以这可能是一个愚蠢的问题,警告!
如果有人想知道背景,它的灵感来自于学习困难之路中的Exercise 16额外学分.
假设这些进口:
#include <stdio.h> #include <assert.h> #include <stdlib.h>
给出一个像这样的简单结构:
struct Point { int x; int y; };
如果我在堆上创建它的实例:
struct Point *center = malloc(sizeof(Point)); assert(center != NULL); center->x = 0; center->y = 0;
然后我知道我可以在内存中打印结构的位置,如下所示:
printf("Location: %p\n",(void*)center);
但是如果我在堆栈上创建呢?
struct Point offCenter = { 1,1 };
位于堆栈中的值仍然在内存中的某个位置.那么我如何获得这些信息呢?我是否需要创建指向我的新on-the-stack-struct的指针然后使用它?
编辑:哎呀,猜测这是一个显而易见的.感谢Daniel和Clifford!为了完整性,这里是使用&的打印示例:
printf("Location: %p\n",(void*)¢er);
解决方法
随着“地址”运算符一元& ;.
struct Point offCenter = { 1,1 }; struct Point* offCentreAddress = &offCentre ;