LoginSignup
2
0

More than 3 years have passed since last update.

C言語:構造体のメンバのアドレス

Last updated at Posted at 2021-04-04

構造体の各メンバのアドレスの取得は、メンバ名の前ではなく構造体変数名の前に&を用いる。

#include <stdio.h>

struct Person{
        char *name;
        int age;
}naru;

int main() {
        printf("naru.name = %p\nnaru.age = %p\n" , 
              &naru.name , &naru.age);

        return 0;
}

それぞれのアドレスが返ってくる。

配列構造体や、ポインタ構造体も同じくアロー演算子を使って、構造体名の前に&を置く。

引数にintへのポインタ型を取る関数などにも(intに限らず)にもメンバのアドレスを渡すことができる。


#include <stdio.h>

int change(int *n)
{
    *n = 1010;
    return (0);
}

int main(void){
    struct Person{
        char *name;
        int age;
}naru[0];

    naru->age = 10;
    printf("%d\n", naru->age); // 10;
    change(&naru->age);
    printf("%d\n", naru->age); // 1010;
}

2
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0