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