这个程序会在 Turbo C 中编译吗?
Will this program compile in Turbo C?
我想知道,因为我目前正在学习C。
#include<studio.h>
int main()
{
into a=10, *j;
void *k;
j=k=&a;
j++;
k++;
printf("%u %u\n, j, k");
return 0;
}
没有。语句 k++ 有错误。我们不能对 void 指针执行算术运算。
在TurboC中编译上述程序会出现如下错误
> Compiling PROGRAM.C:
> Error PROGRAM.C 8: Size of the type is unknown or zero.
没有
Turbo C 2.01 总共产生了 7 个错误和 3 个警告。
从顶部开始:
stdio.h
拼写错误。如果拼写困难,请记住它代表 Standard input 和 o输出。
into
没有意义。您是说 int
吗? integer. 的缩写
第一次编译时,其余的错误都是因为编译器没有理解上面的内容,但一直在尝试。真是个骑兵!
解决以上两个问题后...
King的回答生效。
Error C:\MAIN.C 9: Size of structure or array not known in function main
为什么?
你想说的可能有很多你想用那条线做的事情。但是,编译器读取的是"Take the pointer k
, and make it point to the next element."元素是指针类型:int* k
指向,int
,char* k
指向一个 char
...
这很重要,因为当您递增指针时,为了指向下一个元素,它必须知道元素的 size。
空元素没有大小。 void*
你说的是 "This pointer points to data. Don't fret compiler, I'll figure out what kind of data later, by using a cast
."
如果你想说 "Take whatever value k
points to, and add 1 to it," 那么你需要 取消引用 k。取消引用意味着 "Take whatever value this points to." 我相信您可以看出它们之间的关系。为此,您可以使用 *
运算符,如下所示:
*k++;
我想知道,因为我目前正在学习C。
#include<studio.h>
int main()
{
into a=10, *j;
void *k;
j=k=&a;
j++;
k++;
printf("%u %u\n, j, k");
return 0;
}
没有。语句 k++ 有错误。我们不能对 void 指针执行算术运算。
在TurboC中编译上述程序会出现如下错误
> Compiling PROGRAM.C:
> Error PROGRAM.C 8: Size of the type is unknown or zero.
没有
Turbo C 2.01 总共产生了 7 个错误和 3 个警告。 从顶部开始:
stdio.h
拼写错误。如果拼写困难,请记住它代表 Standard input 和 o输出。into
没有意义。您是说int
吗? integer. 的缩写
第一次编译时,其余的错误都是因为编译器没有理解上面的内容,但一直在尝试。真是个骑兵!
解决以上两个问题后... King的回答生效。
Error C:\MAIN.C 9: Size of structure or array not known in function main
为什么?
你想说的可能有很多你想用那条线做的事情。但是,编译器读取的是"Take the pointer k
, and make it point to the next element."元素是指针类型:int* k
指向,int
,char* k
指向一个 char
...
这很重要,因为当您递增指针时,为了指向下一个元素,它必须知道元素的 size。
空元素没有大小。 void*
你说的是 "This pointer points to data. Don't fret compiler, I'll figure out what kind of data later, by using a cast
."
如果你想说 "Take whatever value k
points to, and add 1 to it," 那么你需要 取消引用 k。取消引用意味着 "Take whatever value this points to." 我相信您可以看出它们之间的关系。为此,您可以使用 *
运算符,如下所示:
*k++;