如果有人想知道背景,它的灵感来自于学习困难之路中的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 ;总结
以上是内存溢出为你收集整理的如何在C中获取结构的地址?全部内容,希望文章能够帮你解决如何在C中获取结构的地址?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)