說不定沒測試的部分雖然看懂了但卻沒有記下來 ... !不過不管怎樣就繼續往下吧!
這一樣是從良葛格學習筆記繼續的。
這是直接從某位址放進字串的方法
#include <stdio.h>
int main(void) {
// 在 *str1 這個位址放入 h,然後依序放入 ello
char *str1 = "hello";
// 偏移量為 0 即為 h
printf("%c\n", str1[0]);
// 偏移量加 1 即為 e
printf("%c\n", *(str1 + 1));
// 偏移量加 5 也是放了一個 '\0',與陣列字串一樣?
if (str1[5] == '\0') {
puts("如果偏移量加 5 的位址放了 '\\0' 就會看到這行");
}
}
int main(void) {
// 在 *str1 這個位址放入 h,然後依序放入 ello
char *str1 = "hello";
// 偏移量為 0 即為 h
printf("%c\n", str1[0]);
// 偏移量加 1 即為 e
printf("%c\n", *(str1 + 1));
// 偏移量加 5 也是放了一個 '\0',與陣列字串一樣?
if (str1[5] == '\0') {
puts("如果偏移量加 5 的位址放了 '\\0' 就會看到這行");
}
}
釐清底下兩個例子
#include <stdio.h>
int main(void) {
// 這個例子要證明底下兩個是不同的
// 例子一
char *str1[] = {"abc12", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "xy1", "234"};
// 例子二
char str2[10][4] = {"abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "xy1", "234"};
printf("str1\t\t指向這個位址\t\t%X\n", str1);
printf("str1[0]\t\t的位址是\t\t%X\n", &str1[0]);
printf("str1[0]\t\t這個位址所存放的是\t%s\n", str1[0]);
printf("str1[1]\t\t的位址是\t\t%X\n", &str1[1]);
printf("str1[1]\t\t這個位址所存放的是\t%s\n", str1[1]);
// 這邊可以看的出來,它的空間會配合宣告而變動
printf("str1[0][6]\t這個位址所存放的是\t%c\n", str1[0][6]);
puts("");
printf("str2\t\t指向這個位址\t\t%X\n", str2);
printf("str2[0]\t\t的位址是\t\t%X\n", &str2[0]);
printf("str2[0]\t\t這個位址所存放的是\t%s\n", str2[0]);
printf("str2[1]\t\t的位址是\t\t%X\n", &str2[1]);
printf("str2[1]\t\t這個位址所存放的是\t%s\n", str2[1]);
printf("str2[0][4]\t這個位址所存放的是\t%c\n", str2[0][4]);
}
int main(void) {
// 這個例子要證明底下兩個是不同的
// 例子一
char *str1[] = {"abc12", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "xy1", "234"};
// 例子二
char str2[10][4] = {"abc", "def", "ghi", "jkl", "mno", "pqr", "stu", "vwx", "xy1", "234"};
printf("str1\t\t指向這個位址\t\t%X\n", str1);
printf("str1[0]\t\t的位址是\t\t%X\n", &str1[0]);
printf("str1[0]\t\t這個位址所存放的是\t%s\n", str1[0]);
printf("str1[1]\t\t的位址是\t\t%X\n", &str1[1]);
printf("str1[1]\t\t這個位址所存放的是\t%s\n", str1[1]);
// 這邊可以看的出來,它的空間會配合宣告而變動
printf("str1[0][6]\t這個位址所存放的是\t%c\n", str1[0][6]);
puts("");
printf("str2\t\t指向這個位址\t\t%X\n", str2);
printf("str2[0]\t\t的位址是\t\t%X\n", &str2[0]);
printf("str2[0]\t\t這個位址所存放的是\t%s\n", str2[0]);
printf("str2[1]\t\t的位址是\t\t%X\n", &str2[1]);
printf("str2[1]\t\t這個位址所存放的是\t%s\n", str2[1]);
printf("str2[0][4]\t這個位址所存放的是\t%c\n", str2[0][4]);
}
沒有留言:
張貼留言