|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
int main() {
char *cBooks[] = {
"<C程序设计语言>",
"<C专家编程>",
"<C和指针>",
"<C陷阱和缺陷>",
"<C primer plus>",
"<带你学C带你飞>"
};
char **byFishC; // 指鱼C工作室自己出版的书
char **jiayuloves[4]; // 存放四本小甲鱼最爱的书
int i;
byFishC = &cBooks[5]; // 这里byFishC指向cBooks的最后一个元素
jiayuloves[0] = &byFishC[0];
jiayuloves[1] = &byFishC[1];
jiayuloves[2] = &byFishC[2];
jiayuloves[3] = &byFishC[3];
printf("Fishc出版的图书有:%s\n", *byFishC);
printf("小甲鱼喜欢的图书有:\n");
for (i = 0; i < 4; i++) {
printf("%s\n", *jiayuloves[i]);
}
return 0;
}
为啥这段代码没有问题,在编译器中打印不出来呢
这段代码有两个问题导致无法输出结果。
首先,char *cBooks是一个指针数组,应该使用花括号来初始化,并且每个元素需要为字符串常量。修改代码如下:
- char *cBooks[] = {
- "book1",
- "book2",
- "book3",
- "book4",
- "book5",
- "book6"
- };
复制代码
第二个问题在于循环打印小甲鱼喜欢的图书时,应该打印的是*jiayuloves的值,而不是*jiayuloves的地址。修改代码如下:
- printf("%s\n", *jiayuloves[i]);
复制代码
改正后的完整代码如下:
- #include <stdio.h>
- int main() {
- char *cBooks[] = {
- "book1",
- "book2",
- "book3",
- "book4",
- "book5",
- "book6"
- };
- char **byFishC; // 指鱼C工作室自己出版的书
- char ***jiayuloves; // 存放四本小甲鱼最爱的书
- int i;
- byFishC = &cBooks[5]; // 这里byFishC指向cBooks的最后一个元素
- jiayuloves = &byFishC;
- printf("Fishc出版的图书有:%s\n", *byFishC);
- printf("小甲鱼喜欢的图书有:\n");
- for (i = 0; i < 4; i++) {
- printf("%s\n", *(*jiayuloves - i));
- }
- return 0;
- }
复制代码
该代码输出结果为:
- Fishc出版的图书有:book6
- 小甲鱼喜欢的图书有:
- book6
- book5
- book4
- book3
复制代码
以上回复来自 -- ChatGPT(FishC官方接口),如未能正确解答您的问题,请继续追问。
|
|