07_ポインタ
ポインタと引数
サンプルコード
#include <stdio.h>
#include <stdlib.h>
void swap(int, int);
void swap_pointer(int*, int*);
int main(){
int _int1, _int2;
_int1 = 10;
_int2 = 20;
/* _int1 と _int2 を入れ替えたい*/
printf("元 \n");
printf("_int1 = %d, _int2 = %d \n", _int1, _int2);
printf("----------------------------------------\n");
swap(_int1, _int2);
printf("swapを利用 \n");
printf("_int1 = %d, _int2 = %d \n", _int1, _int2);
printf("----------------------------------------\n");
swap_pointer(&_int1, &_int2);
printf("swap_pointerを利用 \n");
printf("_int1 = %d, _int2 = %d \n", _int1, _int2);
system("pause");
return 0;
}
void swap(int value1, int value2){
int temp;
temp = value1;
value1 = value2;
value2 = temp;
return;
}
void swap_pointer(int* value1, int* value2){
int temp;
temp = *value1;
*value1 = *value2;
*value2 = temp;
return;
}
出力結果
元
_int1 = 10, _int2 = 20
----------------------------------------
swapを利用
_int1 = 10, _int2 = 20
----------------------------------------
swap_pointerを利用
_int1 = 20, _int2 = 10
続行するには何かキーを押してください . . .
ポインタのポインタ
サンプルコード
#include <stdio.h>
#include <stdlib.h>
int main(){
int _int1;
/*ポインタ*/
int *p;
int *p2;
/*ポインタのポインタ*/
int **pp;
p = &_int1;
pp = &p;
**pp = 10;
printf("******\n");
printf("値\n");
printf("******\n");
printf("_int1 = %d, *p = %d, **pp = %d\n", _int1, *p, **pp);
printf("******\n");
printf("アドレス\n", _int1, *p, **pp);
printf("******\n");
printf("_int1 = %p, *p = %p, **pp = %p\n", &_int1, &p, &pp);
system("pause");
return 0;
}
出力結果
******
値
******
_int1 = 10, *p = 10, **pp = 10
******
アドレス
******
_int1 = 00EFF72C, *p = 00EFF720, **pp = 00EFF708
続行するには何かキーを押してください . . .