[C]ポインタ
コア
ポインタ(pointer):アドレス値を含む変数(または定数)
1つのアドレス値が1 Byteサイズのメモリ領域を表す
32 bitシステムは32 bitでアドレス値を表します
(最大使用可能メモリ容量:2^32 bit=4 GB)
64ビットシステム:2^64ビット(18446744073709551616ビット=230 5843 TB)
&
演算子は、被演算子のアドレス値を返す機能を有する演算子である.&テスト演算子
#include <stdio.h>
int main(void)
{
int num_a = 3;
int num_b = 'A';
double num_c = 3.141592;
printf("num_a stored location : %#x \n", &num_a);
printf("num_b stored location : %#x \n", &num_b);
printf("num_c stored location : %#x \n\n", &num_c);
// %#x는 16진수임을 표시함과 동시에 가독성을 위해 %x 대신 사용
printf("num_a address value size : %d \n", sizeof(&num_a));
printf("num_b address value size : %d \n", sizeof(&num_b));
printf("num_c address value size : %d \n\n", sizeof(&num_c));
return 0;
}
32 bitシステムで実行すると、address value sizeは4(Byte)を出力します.
ポインタ?
アドレス値を格納し、変数のアドレス値を格納するために宣言される変数をポインタ変数と呼ぶ.
ポインタは定数であってもよいし、変数であってもよいし、常に4 Byte(32ビットシステム)または8 Byte(64ビットシステム)のサイズを有していてもよい.
ポインタ変数は、
&
演算子によって変数の最初のアドレス値を格納する.なぜint型変数にアドレス値を格納しないのか
追加
Reference
この問題について([C]ポインタ), 我々は、より多くの情報をここで見つけました https://velog.io/@binsu/C-포인터テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol