器用貧乏です。はげたかです。日記です。

どうも、はげたかです。今まで器用貧乏に生きてきました。ジェネラリスト・フルスタックエンジニアを目指しています。

今日の一言:カテゴリ分けをしっかりしたらPVあがるかな?

高橋麻奈『やさしいC』終わり

今日でやさしいCは終わり。結構前に終わってたんだけど、更新するの忘れていたんだよね。
とまぁ、相変わらず勉強日記とはいえない記事ですが。

Lesson10

メモ

配列のアドレス

int main(void)
{
    /* 
    int は4byteのため、4ずつ増える 
    FF4C FF50 FF54 FF58 FF5C 
    */
    
    int test[5] = {10, 20, 30, 40, 50};
    
    printf("test[0]のアドレスは、%p\n", &test[0]);    
    printf("testのアドレスは、%p\n", test);
    // →test[0]のアドレス → "配列名" は最初のアドレスを表す

    printf("test[1]のアドレスは、%p\n", &test[1]);
    printf("test+1のアドレスは、%p\n", test+1);
    // →test[1]のアドレス → "+1" は次のアドレスを表す。
};

配列を引数として使う

// 引数を配列hogeとしてもらう。
 double avg(int hoge){
 }

int main(){
	hoge = {10,20,30};
	// hoge(hoge[]の先頭アドレス)を送る
	avg(hoge);
}
/* 
配列を引数として使う場合は、いつも通りに使えば大丈夫。
重要:引数として配列を使う場合、配列の先頭要素のアドレスを実引数として渡す。

/

ポインタを引数として使う

double avg(int *pT){
 for(~~;~~; i++){
 	// 応用:先頭から次のi番目の要素を足していく
 	sum = sum + *(pT+i)
 	// sum = sum + pT[i] でも同様な結果を求められる。
 }
 }

int main(){
	avg(hoge);
}

文字列とポインタ

int main(){
	// ポインタを使った場合
	char *str = "Hello"
	str = "Goodbye"
	// → ポインタの先を変えるだけだからできるんだよ!!
	/* 出来ない
	scanf("%s", str);
	 */

	// 配列を使った場合
	char str = "Hello"
	/* 出来ない
	str = "Goodbye"
	一度strという箱を作ったら、大きさを変えることが出来ない。
	*/
	scanf("%s", str);
	/* できるよ、 ただし str[100]など大きさを確保しておく */

}
レビューについてはこちらを参考に 高橋 麻奈 『やさしいC』|精神的に向上心のないものは馬鹿だ
広告を非表示にする