• ベストアンサー

int

猫でもわかるプログラミングを見ていましたら次のような命令がありました。 int は変数宣言ということですがどのように宣言しているのでしょうか。 int takestone(int *, int, int, int); int main()

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>takestone(int*,int,int,int)とは引数が4つで整数ですという意味でしょうか? そうです。こういう風に型宣言をしておけば、呼び出し側で間違えて呼び出したときにコンパイルエラーで引っかかります。 >最初のint*は何でしょうか。 第一引数は int へのポインタです。 >int main()がありますが、他に似たような書き方で >main() >int main(void) >void main(void)などありますがどう違うのでしょうか? main() :引数なしで戻り値が int (省略すると int です) int main(void):引数なしで戻り値が int void main(void):引数なしで戻り値もなしです。 main() 本当は int main(void) と書かないとならないですが省略した書き方です。

konnyaku
質問者

お礼

非常に良く分かりました。ありがとうございました。

その他の回答 (2)

  • yuizuian
  • ベストアンサー率42% (103/245)
回答No.2

関数の宣言でしょうか。 #1の方のおっしゃる通り int takestone(int*,int,int,int)とは 戻り値がint型で、引数はint*、int、int、int型です という意味です。 >引数が4つで整数ですという意味でしょうか? そんな感じですね。 >最初のint*は何でしょうか。 ポインタはご存知ですか? int*はint型のポインタという事になります。 他の引数は変数のコピーを渡しているのですが、int*は変数のアドレスを渡します。 違いとしては、前者は関数内でいくら中の値を変えようと引数の元になった変数の値は変わりませんが、後者は変わります。 ポインタについては、ここで簡単に説明するのが(私には)難しいので、参考URLや書籍等で勉強してください。 int main()とint main(void)は同じ意味です。 voidは省略が可能なので、記述しない場合があるんですよ。 ですから、main()はvoid main(void)と同じという事になります。 voidは最初のうちは「ない」と考えていても良いと思います。 void main(void)…引数も戻り値も無い int main(void)…引数はない、戻り値はint型 参考URLは初心者向けのC言語サイトです。 参考にしてください。

参考URL:
http://www.kumei.ne.jp/c_lang/
konnyaku
質問者

お礼

非常に詳しい説明ありがとうございました。 main ()はint main(void)ではないのでしょうか? ホームページで検索して調べたらそうでした。 http://home.att.ne.jp/sun/ma7/kakorogu35.htm まったく知らないので調べることも大変です。 ありがとうございました。

回答No.1

>どのように宣言しているのでしょうか。 質問の意味がよくわかりませんが、 int takestone(int *, int, int, int); はどういう意味かということでしょうか? これは関数 takestone というのがあって、その関数の引数のは int*,int,int,int 型で戻り値は int ですという意味です。決して takestone(int *, int, int, int) という名前の int 変数を定義しているのではありません。

konnyaku
質問者

補足

takestone(int*,int,int,int)とは引数が4つで整数ですという意味でしょうか? 最初のint*は何でしょうか。 もう一つ質問に int main()がありますが、他に似たような書き方で main() int main(void) void main(void)などありますがどう違うのでしょうか? お願いします。

関連するQ&A

  • int型のポインタ

    int型のようなメモリを大量に使用しないものでも、ポインタで変数宣言しているのをよく見かけますが、 なぜでしょうか? 私はCに慣れていないため、int型くらいのサイズだったら、なるべくならポインタを使わないで書いてもらった方が可読性が良いので、ポインタにするメリットがあまり感じられません。

  • C# int→byte のキャスト

    プログラミング初心者です。 int型の変数に255以上の値を代入し、byte型の変数にcastするとbyte型の変数に代入される値はint変数の値から256を引いた値になります。なぜですか、またどういう仕組みでcastは行われるんですか?

  • (int *)の意味

    しょーもない質問すみません。 C++を独学中のプログラミング自体初学者です。 今読んでる教科書に、malloc関数の説明として、 指定された大きさの領域をヒープに割り当て、その領域の先頭のポインタを返す関数であるとあり、 例には、 .... int *x; x=(int *)malloc(sizeof(int)); *x=100; ..... などとあるのですが、malloc関数の前の(int *)は xはあくまで変数、malloc関数で帰ってくるのはpointerなので、 *でポインタから変数にした上で、その変数の型をintに強制的にしているという理解で合っているでしょうか?? どうも*がついている分、xはポインタのような気もして、混乱しています。

  • intとINTの違いは?

    宣言で int a; INT b; というのが出来るのですが、 大文字と小文字では何が違うのでしょうか?

  • int main()、void main()、void main(void)、int main(void)

    今日、大学でC言語の講義の時間、先生が、 #include <stdio.h> void main(void){ } と宣言してプログラムを書くと教えていました。 main関数には、 main() void main() void main( void ) int main() int main( void ) と、人によりいくつかの描き方があったりします。 どれが本当は正しいのでしょうか? void mainはすべきではないとなんかの本で読んだのですが・・。

  • int main(int argc, char* argv[]) についての質問

    こんにちは.つね日ごろ思っている質問させてください. Cの参考書には, (1) void main(void) { } (2) int main(int argc, char* argv[]) { return 0; } の2つのパターンが記載されていますが, どういう違いがあるのでしょうか? (1)の場合main関数は,型を持たず,引数も持たない. ※Turbo Cなどのコンパイラーでは, return文がないと警告出ます. (2)の場合は,int 型をかえし,引数はint型 変数と char型ポインタ配列(?) を指定している. といったくらいしか分かりません. (2)に関してもう少し述べれば, コマンドラインからファイルを指定し,実行することが できると勉強した記憶があるのですが, 理解があいまいです. 特に(2)の場合のmain関数の意味と,その使い方について アドバイスお願い致します.

  • ”int *a,*b”というポインタ変数宣言した値でa=&bということ

    ”int *a,*b”というポインタ変数宣言した値でa=&bということはできる? ”int *a,*b”このような変数をグローバル宣言した場合、 a=&bというようなことはできるのでしょうか? ”int *a,*b” この宣言で、 aが10番地 bが20番地に定義されたと仮定しています。

  • int型のゼロ埋め

    int型の変数をゼロ埋めしたいのですが どうするのかわかりません。 わかる方 いらっしゃったら教えていただけ ないでしょうか? お願いします。

    • ベストアンサー
    • Java
  • int i, int i[1];

    C++で、  int i; と、  int i[1]; は、どっちで宣言をしても、iは同じ振るまいですか?

  • mainの外に変数 vs ポインタ渡し

    C++についての質問です。プログラミング初心者ですが、よろしくお願いします。 最近、関数の外側でも変数を宣言できることを知りました。関数の外側で変数を宣言すると、全ての関数でその変数にアクセスすることができ大変便利なように思います。 「わざわざポインタ渡しなどする必要はないのでは?」と思ってしまいました。 これは何か問題があるのでしょうか? 初心者の言葉で説明しても理解しにくいかと思いますので、例として「足し算するプログラム」を以下に記載します。 ポインタ渡しで書くと、以下のような感じになるかと思います。 //●ポインタ渡し #include "stdafx.h" #include <iostream> void func(int x,int y,int *pans){ *pans = x+y; } void main(){ int a=10, b=20, ans; func(a,b,&ans); std::cout << ans << std::endl; } しかし、mainの外に変数を宣言すれば //●mainの外に変数 #include "stdafx.h" #include <iostream> int a,b,ans; void func(int x,int y){ ans = x+y; } void main(){ a=10; b=20; func(a,b); std::cout << ans << std::endl; } ansをポインタ渡しする必要なく、funcの計算結果をansに代入できました。 「●mainの外に変数」のプログラムはどのような問題や危険性を孕んでいるのでしょうか? 以上になります。長文お読みいただきありがとうございました。 よろしくお願いいたします。

専門家に質問してみよう