■基本データへのポインタ
以下のようなコードを実行したとする。
int n = 100;
int *p = &n;
アドレス表現としては以下のようになる。
■配列データ
以下のようなコードを実行したとする。
int array[3] = {100,200,300};
アドレス表現としては以下のようになる。
■文字列データ (char の配列)
以下のようなコードを実行したとする。
char s[] = "ABC";
アドレス表現としては以下のようになる。
■演習1
以下のプログラムを作成し、結果を確認してください。
hellopointer2.c
#include <stdio.h>
/* 平均を求める関数(ポインタ不使用版) */
double ave1(double x,double y){
double wk;
wk = (x+y)/2.0;
return wk;
}
/* 平均を求める関数???(ポインタ不使用版) */
void ave2(double x,double y,double z){
z = (x+y)/2.0;
}
/* 平均を求める関数(ポインタ使用版) */
void ave3(double x,double y, double *ans){
double wk;
wk = (x+y)/2.0;
*ans = wk; // 引数のポインタ先に値を書き込み
}
int main(void){
double a = 10.0;
double b = 20.0;
double x = 0.0;
x = ave1(a,b);
printf("a=%f,b=%f,z=%f\n",a,b,x);
x=0; // reset
ave2(a,b,x);
printf("a=%f,b=%f,z=%f\n",a,b,x);
x=0; // reset
ave3(a,b,&x); // アドレスを渡す
printf("a=%f,b=%f,z=%f\n",a,b,x);
return 0;
}
■演習2
以下のプログラムを作成し、結果を確認してください。
hellostring.c
#include <stdio.h>
void main(void){
char s[] = "ABC";
printf("%d,%c\n",s[0],s[0]); // %d は数字として出力、%c は文字として出力する
printf("%d,%c\n",s[1],s[1]);
printf("%d,%c\n",s[2],s[2]);
printf("%d,%c\n",s[3],s[3]);
}