もう少し丁寧にc言語の入門記事を書いてみました6
今回は構造体とポインタについて学びます。最初の方でポインタとは変数のアドレスと説明しましたが、いまいちピンとこなかった方もいると思います。主記憶装置であるメインメモリが0x0000番地から0xFFFF番地まであるとしてそれぞれの番地の事をアドレスといいます。そして、それぞれの番地に値を代入していきます。図で描くとこんな感じです。つまり、アドレスを取得さえすればその中身を書き換えたりアドレスを加算すると配列のように使える事も出来ます。#include<stdio.h>
int main()
{
int num=5;
int *po;
po=&num;
*po=3;
printf("%d",num);
}この結果は、3と表示されます。ポインタの宣言は、型名 *ポインタの変数名です。ポインタに変数のアドレスを渡す為には、型名 *ポインタの変数名=&変数名;か、ポインタを宣言してから、ポインタの変数名=&変数名とすればOKです。ポインタから値を取り出すにはポインタの変数名の先頭に*を付ければ良いので、さきほどのソースで*po=3;とすると変数numまで書き変わってしまう事になります。ここで、ポインタに紐づけられた変数のアドレスを書き換える方法を説明します。#include<stdio.h>int main()
{
int num=50;
int num2=32;
int *po;
po=&num;
*po=3;
printf("%p:%d\n"
0