获取结构中数组元素的地址

时间:2012-09-05 17:15:11

标签: c

我们如何通过结构指针获取数组元素的地址?

我有一个示例代码如下:

#include<stdio.h>
#include<string.h>

typedef struct {
    int mynam ;
 } transrules;

typedef struct {
    int ip ;
    int udp;
    transrules rules[256];

}__attribute__ ((__packed__)) myudp;

myudp  udpdata ;
myudp* ptrudp = &udpdata ;

int main(){

    memset (&udpdata , 0 ,sizeof(udpdata));
    ptrudp->ip = 12 ;
    ptrudp->udp = 13 ;
    ptrudp->rules[0].mynam = 15 ;
    printf("%d",ptrudp->rules[0].mynam);
    return 0;

}

我的函数希望将规则[0]的地址作为参数传递。是否可以打印规则[0]的地址或事实上任何即规则[n]?

3 个答案:

答案 0 :(得分:4)

  

是否可以打印规则[0]的地址或作为   事实上任何规则[n]

是的,可能:

printf("%p\n", (void *) &ptrudp->rules[i]); /* Cast required by %p. */

您可以将指针rules[i]传递给您的函数。

答案 1 :(得分:0)

指向结构的指针指向结构,因此元素的地址仍然可用。

f(&ptrudp->rules[n]);

答案 2 :(得分:0)

是。您可以像通常使用任何其他数组一样访问它,只需使用->运算符从结构中获取它:

transrules *addr = &ptrudp->rules[n];