[英]Get the address of the array element in a structure
我們如何通過結構指針獲取數組元素的地址?
我有一個示例代碼如下:
#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;
}
我的函數希望將rules [0]的地址作為參數傳遞。是否可以打印rule [0]的地址,或者實際上是否可以打印任何rule [n]?
是否可以打印rule [0]的地址,或者實際上是否可以打印任何rule [n]
是的,有可能:
printf("%p\n", (void *) &ptrudp->rules[i]); /* Cast required by %p. */
您可以將指向rules[i]
的指針傳遞給函數的方法相同。
指向結構的指針指向結構 ,因此元素的地址仍然可用。
f(&ptrudp->rules[n]);
是。 您可以像通常使用任何其他數組一樣訪問它,只需使用->
運算符從結構中獲取它:
transrules *addr = &ptrudp->rules[n];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.