如何在C中获取结构的起始和结束地址?

Urs*_*jor 3 c struct memory-address

随着"地址"运算符一元&.我可以知道结构的起始地址.

 struct Point {
     int* data;
     int x;
     int y;
 };

 struct Point offCenter = { 1, 1 };
 struct Point* offCentreAddress_start = &offCenter ;
Run Code Online (Sandbox Code Playgroud)

如何确定结束地址(offCenterAddress_end)?

Que*_*tin 12

你不需要sizeof.

struct Point offCenter = { 1, 1 };
struct Point* offCentreAddress_start = &offCentre;
struct Point* offCentreAddress_end = &offCentre + 1;
Run Code Online (Sandbox Code Playgroud)

根据定义,指针算法以指向类型的大小的倍数完成.这就是数组索引的工作原理.

关于您的评论:指向datamalloc'版内存(或其他任何东西)将不会改变data的大小:这只是一个指针.

  • 您可以使用类似的方法在结束后立即获取字节的地址:`int*end =&offCenter.y + 1`. (2认同)