先日、関数で渡された構造体へのポインタでつまづくことがありまして、なんとかそのプログラムミスは直したのですが、
構造体へのポインタpに対して、*p, &p, pそれぞれは何を指すのだろうかと思い、
*p = ?
&p = ?
p = pの指す構造体のアドレス
ではないかと予想をし(二つは埋まってませんが...)、下のプログラムを作りました。
そして実行結果をみて、
*pについては、その構造体のメンバの一番先頭の変数の値を、
pについては、予想通り構造体のアドレス(別のやつかも知れませんが...)を、それぞれ表示する。ということなのだろうと思いましたが、
&pについては、書記化指定子を%dや%pにしてみましたが、*pでもpでもない値が表示されました。
&pとは一体なにを指すのでしょう?
#include<stdio.h>
typedef struct{
int n;
double a;
}test_t;
void hyouji( test_t *test, int t, double d){
test->n = t;
test->a = d;
printf("*test = %d\n", *test);
printf("test = %p\n", test);
printf("&test = %p\n", &test);
printf("&test = %d\n", &test);
}
test_t m_test;
int main(void){
hyouji(&m_test, 3, 2.5);
return 0;
}