【发布时间】:2012-12-08 23:04:36
【问题描述】:
下面的代码因 EXC_BAD_ACCESS 而崩溃。有人知道为什么吗?
报告以下警告:
不兼容的整数到指针转换从'int'分配给'char *'
register int t;
char *s;
double val;
s = printn(val);
t = strlen(s); // <<< breaks on this line
...
char *printn(n)
double n;
{
register char *fmt, *s, *ss;
double absn;
short sign;
....
s = printb("%-0.2f", sign*absn);
for (ss = s; *ss; ++ss);
while (*--ss == '0' || *ss == ' ') *ss = 0;
if (*ss == '.') *ss = 0;
return(s);
}
谢谢。
【问题讨论】:
-
register? K&R 风格的函数定义?又是 1982 年吗? -
关闭!这段代码其实是1983年的
-
啊,1983年,
sizeof(char*) == sizeof(int)的机会很大。在这种情况下,代码的工作机会并不大。
标签: c