读书人

一道题目编译通不过,为什么?该如何解决

发布时间: 2012-03-30 17:32:10 作者: rapoo

一道题目编译通不过,为什么?
main()
{
char str[][10]={ "China ", "Beijing "};
char *p=str;
printf( "%s\n ",p+10);
}

[解决办法]
不小的楼主用的是什么编译器 我用的是TC 2.0可以编译并执行的 输出:Beijing
但是这里也出现了一个小错误,p是个字符指针 而str是个2维数组名,一般要把一个而为数组名赋给一个指向指针的指针 既原程序应当改为
main()
{
char str[][10]={ "China ", "Beijing "};
char *p=str[0];/*改*/
printf( "%s\n ",p+10);
}
你试试 若再VC++中用 printf的话要 加#include <stdio.h>
[解决办法]
#include <stdio.h>
int main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12,}, *p = a + 5, *q = NULL;
/* *q=*(p+5); *//* 这句有错 */
q=p+5;/* 改为这样就OK了 */
printf( "%d %d\n ",*p, *q);
return 0;
}

[解决办法]
for(i=0;i <4;i++) printf( "%2d ",x); 错
应当为 for(i=0;i <3;i++) printf( "%2d ",x[i]);
fun(x,0,3); 错
应为fun(x,0,2); 原因是引用x[3]超出数组边界,其结果是未定义的,可能会造成严重的后果哦~

读书人网 >C语言

热点推荐