このページは、ポインタと配列の関係 の記事を読んでおくと
理解しやすくなります。
配列を渡す際は、必要な情報を工夫して渡すようにします。
ここでは、配列の先頭アドレスと要素数を指定してやる方法を紹介します。
#include <stdio.h>
void show(int* ip, int n);
void main(void) {
int idata[3];
idata[0] = 5;
idata[1] = 15;
idata[2] = 25;
show(idata, 3); // show(&idata[0], 3); とも書ける。
}
void show(int* ip, int n) {
int ans = 0;
for (i=0; i<n; i++) {
ans = ans + *ip;
ip++;
}
printf("合計=%d\n", ans);
}
|
このプログラムは、配列idataのデータを全て足して表示するプログラムです。
関数showには、idataの先頭アドレスと要素数を渡しています。
ポインタだと多少分かりずらいので、引数を配列形式で記述する事も可能です。
#include <stdio.h>
void show(int ip[], int n);
void main(void) {
int idata[3];
idata[0] = 5;
idata[1] = 15;
idata[2] = 25;
show(idata, 3); // show(&idata[0], 3); とも書ける。
}
void show(int ip[], int n) {
int ans = 0;
for (i=0; i<n; i++) {
ans = ans + ip[i];
}
printf("合計=%d\n", ans);
}
|
配列形式で記述していますが、処理自体は同じです。
配列を渡せると言う事は、配列で表現される文字列も渡せる事になります。
#include <stdio.h>
void show(char* cp);
void main(void) {
char cdata[5];
cdata[0] = 's';
cdata[1] = 't';
cdata[2] = 'a';
cdata[3] = 'r';
cdata[4] = '\0';
show(cdata); // show(&cdata[0]); とも書ける。
}
void show(char* cp) {
printf("文字列=%s\n", cp);
}
|
文字列を渡す場合も先頭アドレスを渡してやればOKです。
文字列の終わりは、NULL(\0)が目印なので、問題ありません。
そのままprintf関数で表示しています。
スポンサードリンク
|