《征服C指標》原始碼(第一章)
阿新 • • 發佈:2019-01-10
程式碼1-1
#include <stdio.h> int main(void) { int hoge = 5; int piyo = 10; int *hoge_p; /* それぞれの変數のアドレスを表示する */ printf("&hoge..%p\n", (void*)&hoge); printf("&piyo..%p\n", (void*)&piyo); printf("&hoge_p..%p\n", (void*)&hoge_p); /* ポインタ変數hoge_pにhogeのアドレスを代入する */ hoge_p = &hoge; printf("hoge_p..%p\n", (void*)hoge_p); /* hoge_pを経由してhogeの値を表示する */ printf("*hoge_p..%d\n", *hoge_p); /* hoge_pを経由してhogeの値を変更する */ *hoge_p = 10; printf("hoge..%d\n", hoge); return 0; }
程式碼1-2
#include <stdio.h> int main(void) { int hoge; int *hoge_p; /* hoge_p に hogeへのポインタを設定 */ hoge_p = &hoge; /* hoge_p の値を表示 */ printf("hoge_p..%p\n", (void*)hoge_p); /* hoge_pに 1加算 */ hoge_p++; /* hoge_p の値を表示 */ printf("hoge_p..%p\n", (void*)hoge_p); /* hoge_p に 3加算した値を表示 */ printf("hoge_p..%p\n", (void*)(hoge_p + 3)); return 0; }
程式碼1-3
#include <stdio.h> int main(void) { int array[5]; int i; /* 配列arrayに値を設定 */ for (i = 0; i < 5; i++) { array[i] = i; } /* その內容を表示 */ for (i = 0; i < 5; i++) { printf("%d\n", array[i]); } /* arrayの各要素のアドレスを表示 */ for (i = 0; i < 5; i++) { printf("&array[%d]... %p\n", i, (void*)&array[i]); } return 0; }
程式碼1-4
#include <stdio.h>
int main(void)
{
int array[5];
int *p;
int i;
/* 配列arrayに値を設定 */
for (i = 0; i < 5; i++) {
array[i] = i;
}
/* その內容を表示(ポインタ版) */
for (p = &array[0]; p != &array[5]; p++) {
printf("%d\n", *p);
}
return 0;
}
程式碼1-5
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
int get_word(char *buf, int buf_size, FILE *fp)
{
int len;
int ch;
/* 空白文字の読み飛ばし */
while ((ch = getc(fp)) != EOF && !isalnum(ch))
;
if (ch == EOF)
return EOF;
/* ここで,chには,単語の最初の文字が格納されている */
len = 0;
do {
buf[len] = ch;
len++;
if (len >= buf_size) {
/* 単語が長すぎるのでエラー */
fprintf(stderr, "word too long.\n");
exit(1);
}
} while ((ch = getc(fp)) != EOF && isalnum(ch));
buf[len] = '\0';
return len;
}
int main(void)
{
char buf[256];
while (get_word(buf, 256, stdin) != EOF) {
printf("<<%s>>\n", buf);
}
return 0;
}