NaaN日記

やったこと、覚えたことを発信する場

ポインタを使えるようになりたい(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;
}

つづく