#include <stdio.h>
struct DATA{
int id;
double height;
};
void in_data(struct DATA *ptr);
void main(void){
struct DATA stdata;
in_data(&stdata);
printf("ID=%d, height=%lf",stdata.id, stdata.height);
}
void in_data(struct DATA *ptr){
ptr->id = 101;
ptr->height = 165.5;
}
ptr -> id や ptr -> height のような表現はポインタを表していますよね? 実際, は正しく出力されますが, は警告が出て,そのまま実行しても正しく出力されません.
しかし,最後の方の という表現はなぜ正しいのでしょうか? ポインタならば とするのが正しいと思いますが,これをコンパイルしようとすると,
error: invalid type argument of unary ‘*’ (have ‘int’)
*(ptr -> id) = 101;
とエラーが出てしまいました.
どなたか教えてくださると助かります.