関数が2つのポインタを引数として取り、その関数がポインタのアドレスを変更するプログラムを書いているので、main関数のポインタの値を呼び出すと、値。Cで関数へのポインタを渡す
コード: -
#include <stdio.h>
void sample(int *d, int *m);
int main(){
int day=12,month=3;
int *d,*m;
d = &day;
m = &month;
printf("Day = %d \t MOnth = %d\n",*d,*m);
sample(d,m);
printf("Day = %d \t Month = %d\n",*d,*m);
}
void sample(int *d, int *m){
int month = 1;
int day = 30;
m = &month;
d = &day;
}
私もsample(&d,&m)
を使用して関数を呼び出したが、それはあまりにも仕事did'nt stackoverflowの上の同じ質問に対する回答に基づいています。
私も同じよう関数を定義しようとした: -
void sample(int *d,int *m){
int month = 1;
int day = 30;
*m = month;
*d = day;
}
しかし、プログラムがクラッシュしました。
あなたの第二のバージョンが動作するはずです...それが墜落した場合、何か他のことが起こったと思います。 – vu1p3n0x
関数のポインタ変数のローカルコピーを関数のローカル変数を指すように設定しています。これは 'main()'では何も変わりません。あなたは(サンプル関数で) '* d = 30; * m = 1; '(または' * d =日; * m =月; ')。 –