初心者のためのC言語入門講座ポインタ
2023年10月26日C言語 ポインタchar型
●ソース1
//ポインタ=変数がメモリのどのアドレス(番地)を格納するための変数
#include <stdio.h>
void main(){
char a; //1バイトの変数
char *b; //番地を格納するためのポインタ変数を宣言
a='A';
b=&a; //&でAの変数のアドレス(番地)を格納
printf("%c \n",a);
printf("%x",b); //xが16進数表示
}
C言語ポインタint型
●ソース2
#include <stdio.h>
void main(){
int a=5; //4バイト
int a2=3;
int a3=2;
int *b; //番地を格納する変数を宣言(ポインタ変数)
int *b2;
int *b3;
b=&a; //&でaの変数のアドレスを格納
b2=&a2;
b3=&a3;
printf("0x%x %d\n",b,*b); //*でアドレスの変数の中身(値を表示)
printf("0x%x %d\n",b2,*b2);
printf("0x%x %d\n",b3,*b3);
}
ポインタの利用
●ソース3
#include <stdio.h>
void main(){
int a;
int *b;
a=50;
b=&a;
//b=b+1; そのまま足し算するとアドレスがint 型なので4つ増える
*b=*b+1;
printf("0x%x %d\n",b , *b);
}
この単元の練習問題
問題1 このプログラムの実行結果を参考に、____部分を埋めてプログラムを完成してください。
(ポインタが指している値を表示するプログラムです)
(ポインタが指している値を表示するプログラムです)
#include
int main( void ){
char c;
______; /* ポインタの宣言 */
c = ‘A’;
p = ______; /* ポインタの値設定 */
printf( “%c\n”, ______ ); /* ポインタの指す値を表示 */
return 0;
}
実行結果
A
int main( void ){
char c;
______; /* ポインタの宣言 */
c = ‘A’;
p = ______; /* ポインタの値設定 */
printf( “%c\n”, ______ ); /* ポインタの指す値を表示 */
return 0;
}
実行結果
A
問題2 このプログラムの実行結果を参考に、____部分を埋めてプログラムを完成してください。
(ポインタが指している中身を+2するプログラム)
(ポインタが指している中身を+2するプログラム)
#include
int main( void ){
char c = ‘A’;
______;/* ポインタの宣言 */
p = ______; /* ポインタの値設定 */
printf( “%c\n”, ); /* ポインタの指す値を表示 */
______; /* ポインタの指す値を+2 */
printf( “%c\n”, ); /* ポインタの指す値を表示 */
return 0;
}
実行結果
A
C
int main( void ){
char c = ‘A’;
______;/* ポインタの宣言 */
p = ______; /* ポインタの値設定 */
printf( “%c\n”, ); /* ポインタの指す値を表示 */
______; /* ポインタの指す値を+2 */
printf( “%c\n”, ); /* ポインタの指す値を表示 */
return 0;
}
実行結果
A
C
問題3 このプログラムの実行結果を参考に、____部分を埋めてプログラムを完成してください。
(変数のアドレス、値、ポインタ、ポインタの指す値を表示)
(変数のアドレス、値、ポインタ、ポインタの指す値を表示)
#include
int main( void ){
int a = 611, *ptr;
ptr = &a; /* ポインタの値設定 */
printf( “変数 a のアドレス = %p\n”, );
printf( “変数 a の値 = %d\n”, );
printf( “ポインタ ptr の値 = %p\n”, );
printf( “ポインタ ptr の指す値 = %d\n”, );
return 0;
}
※ %pはアドレスを表示するための変換指定
実行結果例
変数aのアドレス = 0F98
変数aの値 = 611
ポインタptrの値 = 0F98
ポインタptrの指す値 = 611
※下線は環境によってポインタの値は異なります
int main( void ){
int a = 611, *ptr;
ptr = &a; /* ポインタの値設定 */
printf( “変数 a のアドレス = %p\n”, );
printf( “変数 a の値 = %d\n”, );
printf( “ポインタ ptr の値 = %p\n”, );
printf( “ポインタ ptr の指す値 = %d\n”, );
return 0;
}
※ %pはアドレスを表示するための変換指定
実行結果例
変数aのアドレス = 0F98
変数aの値 = 611
ポインタptrの値 = 0F98
ポインタptrの指す値 = 611
※下線は環境によってポインタの値は異なります