今までのことを普通の2次元配列(C言語では本当の意味で2次元配列はないので”もどき”ですが今のコンパイラは賢いので”ポインター"を使ったごとく最適化してくれる。したがって2次元配列と考えて使えばいいのです!)
コード:
#define _CRT_SECURE_NO_WARNINGS //scanf等のセキュリティ警告抑制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//四則計算:+算
double shisoku_tasu(char *gx, char *gy) {
double h, i;
h = atof(gx);
i = atof(gy);
return h + i;
}
//---------------------------------
int main(void)//エントリー ポイント
{
int argc = 4; //引数の数 argument count
char argv[4][5] = { "c1.c", //2次元の配列(もどき) argument values (引数の値)
"10",
"+",
"20",
};
double kekka;
char *m;
if (argc == 4) {
m = argv[2];
if (strcmp(m, "+") == 0) {
kekka = shisoku_tasu(argv[1], argv[3]);
}
printf("Kekka : %.3f\n", kekka);
}
}
実行する
コード:
Kekka : 30.000
続行するには何かキーを押してください . . .
>ポインタが配列の形をとってしまっているということでしょうか?
いいえ”配列”がポインタの形をとってしまっているということです
>可変長配列というワードは初めて聞き調べてみましたが、いまいちピンときませんでした。
>とりあえず、実行するときに配列の長さを指定することができるということくらいしかわからなかったです。
これは後で説明をします。いまはピンとこないはずです。
>つまり、配列の形をとったポインタは長さを実行時に変えれるということですか?
そういう事ですね。
今までのことを普通の2次元配列(C言語では本当の意味で2次元配列はないので”もどき”ですが今のコンパイラは賢いので”ポインター"を使ったごとく最適化してくれる。したがって2次元配列と考えて使えばいいのです!)
[code]
#define _CRT_SECURE_NO_WARNINGS //scanf等のセキュリティ警告抑制
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//四則計算:+算
double shisoku_tasu(char *gx, char *gy) {
double h, i;
h = atof(gx);
i = atof(gy);
return h + i;
}
//---------------------------------
int main(void)//エントリー ポイント
{
int argc = 4; //引数の数 argument count
char argv[4][5] = { "c1.c", //2次元の配列(もどき) argument values (引数の値)
"10",
"+",
"20",
};
double kekka;
char *m;
if (argc == 4) {
m = argv[2];
if (strcmp(m, "+") == 0) {
kekka = shisoku_tasu(argv[1], argv[3]);
}
printf("Kekka : %.3f\n", kekka);
}
}
[/code]
実行する
[code]
Kekka : 30.000
続行するには何かキーを押してください . . .
[/code]
>ポインタが配列の形をとってしまっているということでしょうか?
いいえ”配列”がポインタの形をとってしまっているということです
>可変長配列というワードは初めて聞き調べてみましたが、いまいちピンときませんでした。
>とりあえず、実行するときに配列の長さを指定することができるということくらいしかわからなかったです。
これは後で説明をします。いまはピンとこないはずです。
>つまり、配列の形をとったポインタは長さを実行時に変えれるということですか?
そういう事ですね。