读书人

同样一个程序在VC上报错TC上正常运

发布时间: 2012-03-25 20:55:17 作者: rapoo

同样一个程序,在VC上报错,TC上正常运行。

C/C++ code
#include<stdio.h> length(char *p){  int n=0;  while(*p!='\0')  {    n++;    p++;  }  return n;}void main(){  char *str[20];  int len;  printf("input a string:\n");  scanf("%s",str);  len=length(str);  printf(" %d",len);}



TC上OK。
VC上错误是:
'length' : cannot convert parameter 1 from 'char *[20]' to 'char *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast。
不懂这是为什么。具体行数是len=length(str);


[解决办法]
TC大楷支持2级和指针间的转换吧。。
[解决办法]
char str[20]; // 声明一个长度是20的数组,数组里面的元素是字符。str就可以理解成是指向这个数组的首地址的指针

char *str[20]; // 声明一个长度是20的指针数组,数组里面的元素是指针,会指向别的字符串。
[解决办法]
改成 char str[20];
[解决办法]
探讨

引用:
char str[20]; // 声明一个长度是20的数组,数组里面的元素是字符。str就可以理解成是指向这个数组的首地址的指针

char *str[20]; // 声明一个长度是20的指针数组,数组里面的元素是指针,会指向别的字符串。


怎么修改呢?

[解决办法]
char *str[20];//这是声明了长度是指针的改成char str[20];
[解决办法]
C/C++ code
#include<stdio.h> length(char *p){  int n=0;  while(*p!='\0')  {    n++;    p++;  }  return n;}void main(){  char str[20];  int len;  printf("input a string:\n");  scanf("%s",str);  len=length(str);  printf(" %d",len);}
[解决办法]
楼上的解释都正确,俺来回帖弄个分
[解决办法]
不同类型的不能隐式或可以正确转换,编译器当然提示警告或者错误了;
不同编译器,是警告还是错误不一样
[解决办法]
没用过TC
[解决办法]
char *str[20] 好奇怪的声明。。 去掉指针声明的*试试
[解决办法]
探讨
C/C++ code

#include<stdio.h>
length(char *p)
{
int n=0;
while(*p!='\0')
{
n++;
p++;
}
return n;
}
void main()
{
char *str[20];
int len;
printf("input a string:\n");
scanf(……

读书人网 >C语言

热点推荐