鱼C论坛

 找回密码
 立即注册
查看: 1408|回复: 8

[已解决]网上题库的题,这题对么?

[复制链接]
发表于 2021-4-8 14:42:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
有以下程序执行后输出的结果是
main()
{
   char str[][10]={"China","Beijing"},*p=str;
   printf("%s\n",p+10);
}


答案是Beijing

但实际运行的时候*p=str;这句话报错的应该是(*p)[10]=str吧
最佳答案
2021-4-8 15:14:39
int main()
{
    char str[][10]={"China","Beijing"},*p = (char*)str;
    printf("%s\n",p+10);

    return 0;
}
拿去,强转一下就行了
我刚那gcc测试过了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-4-8 14:52:40 | 显示全部楼层
你可能没有太理解字符串,这里没有错误,不会报错
//这里定义了一个字符串数组str
//str大小为2    str内每个字符串大小为10(或者说字符数组大小为10)
char str[][10]={"China","Beijing"}
//这里定义了一个指针指向str中的第一个字符串的首地址
char *p = str
//p+10就是指针向后移动10个char,此时p指向了str中的第二个字符串的首地址
//打印结果为  Beijing
printf("%s\n",p+10);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 15:00:14 | 显示全部楼层
yuxijian2020 发表于 2021-4-8 14:52
你可能没有太理解字符串,这里没有错误,不会报错

21        11        F:\c c++\内存实验\题库.cpp        [Error] cannot convert 'char (*)[10]' to 'char*' in initialization

我复制你代码,就报错了,是指针类型不匹配吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 15:04:44 | 显示全部楼层
dysow 发表于 2021-4-8 15:00
21        11        F:\c c++\内存实验\题库.cpp        [Error] cannot convert 'char (*)[10]' to 'char*' in initializatio ...

你用的什么编译器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 15:06:46 | 显示全部楼层
yuxijian2020 发表于 2021-4-8 15:04
你用的什么编译器

dev c++
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 15:14:39 | 显示全部楼层    本楼为最佳答案   
int main()
{
    char str[][10]={"China","Beijing"},*p = (char*)str;
    printf("%s\n",p+10);

    return 0;
}
拿去,强转一下就行了
我刚那gcc测试过了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 15:16:57 | 显示全部楼层
因为str定义的时候限定了字符串数组的大小为10
但是char*没有保存字符串数组的大小
但是printf函数会自动找到字符串截止符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-4-8 15:40:49 | 显示全部楼层
yuxijian2020 发表于 2021-4-8 15:14
拿去,强转一下就行了
我刚那gcc测试过了

*p = (char*)str是不是等同于*p=&str[0][0]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-4-8 15:58:36 | 显示全部楼层
不   是强制把str变成char *
相当于 char *p = str[0];
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 19:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表