ポインタを使えるようになりたい(C)
ポインタは難しい。
同じアドレスになる
#include <stdio.h> int main(void){ int *p; //ポインタ変数を宣言 int i = 2; p = &i; //pにiのアドレスを入れる printf("%d\n", i); printf("%p\n", &i); //iのアドレスを表示 printf("%p\n", p);//pのアドレスを表示 return 0; } //2 //0x7ffcfdad145c //0x7ffcfdad145c
書き換えられる
int *p; int i = 2; p = &i; *p = 5; printf("%d\n", i); // 5
NULLを使って事故を防止
宣言したポインタ変数に使えないアドレスが入っていると事故る
int *p = NULL;
使ってみる
ポインタ演算を使わずに足し算
#include <stdio.h> int main(void){ int i, sum = 0, num[10]={1,2,3,4,5,6,7,8,9,10}; for(i = 0; i<10; i++){ sum += num[i]; } printf("%d", sum); return 0; }
ポインタ演算を使うと、
#include <stdio.h> int main(void){ int *data, sum = 0, num[10]={1,2,3,4,5,6,7,8,9,10}; for(data = num; data != &num[10]; data++){ sum += *data; } printf("%d", sum); return 0; }
つづく