構造体の各メンバのアドレスの取得は、メンバ名の前ではなく構造体変数名の前に&を用いる。
#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;
}