- ベストアンサー
C言語での関数の引数の受け渡しについて
C言語での関数の引数の受け渡しについて教えてもらいたいのです。 char *p=Goo; というポインタpがmain関数で定義され、このポインタpをある関数 void func(・・・) に渡すことは出来ますか? つまりポインタを実引数として扱うことはできるのかという事ですが・・・ int p=10; とかだったら、 void func(int test) の関数には、main関数で func(p) で仮引数testにわたせると思うんですが・・・ もし出来るようでしたら、関数の渡し方と定義の記述を教えてください。 どうか宜しくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何も問題なく出来ますよ。 #include <stdio.h> void func(char *p) { printf("%s",p); return; } int main() { char * p = "abc" func(p); return(0); }
その他の回答 (2)
- mneko
- ベストアンサー率33% (46/139)
実引数、仮引数同じ型で有れば、ポインタでも貴方が下に書かれている事と 同じです、例を入れておきます。 void func( int *p,int *ans,int n) { int i; for(i=0;i<n;i++) *ans += *(p+i); } void main( void ) { int data[]={1,2,3,4,5,6,7,8,9,10}; int ans=0; func(data,&ans,10); printf("ans=%d\n", ans); } 貴方の質問と的が外れていたら補足をしてください。
お礼
的が外れてるわけではありません。 ポインタについては本当に苦手でよく分かりません。 回答していただいてありがとうございました。
- MovingWalk
- ベストアンサー率43% (2233/5098)
何をされたいのかいまいちわかりません。 int a; func1(a); と char *p; func2(p); は型が違うだけで同じレベルのことですが。 後者は引数がポインタ型なので、関数は、 void func2(char *p) のようになるのは当然です。 もし、 func3(*p); のようにすれば、p[0]の値が渡されることになりますが、P[1]以降は参照できません。
お礼
私の説明不足で申し訳ありませんでした。 ただ私が分からなかったのは上記のような事でしたので 大変参考になりました! ありがとうございました。
お礼
できました!!こんなに単純だったとは・・・ 本当にありがとうございました。 また何かありましたら宜しくお願いします。