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

use*_*471 5 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;

}
Run Code Online (Sandbox Code Playgroud)

我的函数希望将rules [0]的地址作为参数传递。是否可以打印rule [0]的地址,或者实际上是否可以打印任何rue [n]的地址?

cni*_*tar 5

是否可以打印rule [0]的地址,或者实际上是否可以打印任何rule [n]

是的,有可能:

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

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