このページは、ポインタと配列の関係 と 配列を渡す方法(文字列含む)
static - 静的変数 を読んでおくと
理解しやすくなります。
配列を返すと言う処理は、やる機会が少ないと思いますが、
方法は覚えておきましょう。
配列を返すには、配列の先頭アドレスを返してやります。
#include <stdio.h>
int* hikaku(int* data1, int* data2);
void main(void) {
int a[3] = { 5, 15, 25};
int b[3] = {10, 20, 30};
int* ip;
int i, goukei = 0;
// 数値合計が一番大きい配列を選定
ip = hikaku(a, b);
for (i=0; i<3; i++) {
goukei = goukei + *(ip+i);
}
printf("%d\n", goukei);
}
int* hikaku(int* data1, int* data2) {
int g1=0, g2=0;
// 配列の合計を求める
for (i=0; i<3; i++) {
g1 = g1 + *(data1+i);
g2 = g2 + *(data2+i);
}
// 合計が大きい方の配列を返す
if (g1 > g2) {
return data1;
} else {
return data2;
}
}
|
このプログラムは、2つの配列の数値合計が多い方を選定し、
その合計を表示するプログラムです。
hikaku 関数でどちらの配列が大きいか比べてもらい、
数値合計が大きい方の配列を返しています。
文字列を返す事もできます。
#include <stdio.h>
char* kakou(char* cp);
void main(void) {
char* ss;
ss = kakou("star");
printf("%s\n", ss);
}
char* kakou(char* cp) {
static char str[80];
int i=0;
str[i] = '-';
i++;
while (*cp) {
str[i] = *cp;
cp++;
i++;
}
str[i] = '-';
i++;
str[i] = '\0';
return str;
}
|
関数 kakou は、
渡された文字列の両端にハイフン(-)を付加し、先頭アドレスを返しています。
スポンサードリンク
|