网上题库的题,这题对么?
有以下程序执行后输出的结果是main()
{
char str[]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
答案是Beijing
但实际运行的时候*p=str;这句话报错的应该是(*p)=str吧 你可能没有太理解字符串,这里没有错误,不会报错
//这里定义了一个字符串数组str
//str大小为2 str内每个字符串大小为10(或者说字符数组大小为10)
char str[]={"China","Beijing"}
//这里定义了一个指针指向str中的第一个字符串的首地址
char *p = str
//p+10就是指针向后移动10个char,此时p指向了str中的第二个字符串的首地址
//打印结果为Beijing
printf("%s\n",p+10);
yuxijian2020 发表于 2021-4-8 14:52
你可能没有太理解字符串,这里没有错误,不会报错
21 11 F:\c c++\内存实验\题库.cpp cannot convert 'char (*)' to 'char*' in initialization
我复制你代码,就报错了,是指针类型不匹配吧 dysow 发表于 2021-4-8 15:00
21 11 F:\c c++\内存实验\题库.cpp cannot convert 'char (*)' to 'char*' in initializatio ...
你用的什么编译器 yuxijian2020 发表于 2021-4-8 15:04
你用的什么编译器
dev c++ int main()
{
char str[]={"China","Beijing"},*p = (char*)str;
printf("%s\n",p+10);
return 0;
}
拿去,强转一下就行了
我刚那gcc测试过了 因为str定义的时候限定了字符串数组的大小为10
但是char*没有保存字符串数组的大小
但是printf函数会自动找到字符串截止符 yuxijian2020 发表于 2021-4-8 15:14
拿去,强转一下就行了
我刚那gcc测试过了
*p = (char*)str是不是等同于*p=&str 不 是强制把str变成char *
相当于 char *p = str;
页:
[1]