簡體   English   中英

獲取結構中數組元素的地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM