这个程序会在Turbo C中编译吗?

时间:2015-03-10 11:13:00

标签: c 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;
}

2 个答案:

答案 0 :(得分:1)

没有。语句k ++中有错误。我们不能对void指针执行算术。

在TurboC中编译上述程序时将显示以下错误。

>     Compiling PROGRAM.C:
>     Error PROGRAM.C 8: Size of the type is unknown or zero.

答案 1 :(得分:0)

没有

Turbo C 2.01产生了总共 7 错误和 3 警告。 从顶部:

  • stdio.h拼写错误。如果拼写困难,请记住它代表 St andar d i nput和 o utput。
  • into毫无意义。你是说int吗?它是 int eger的缩写。

在第一次编译时,其余的错误只是因为编译器不理解上述内容,而是继续尝试。什么是士兵!

解决上述两个问题后...... King的答案生效。

Error C:\MAIN.C 9: Size of structure or array not known in function main

<强>为什么吗

你可能会说有很多事情想要用这条线做。但是,编译器读取的是“取指针k,并使其指向下一个元素。”元素是指针类型:int* k指向和intchar* k指向char ...
这很重要,因为当您递增指针时,为了指向下一个元素,它必须知道元素的 size
虚空元素没有大小。一个void*是你说“这个指针指向数据。不要担心编译器,我会在以后使用cast找出什么样的数据。”

如果您打算说“取任何值k点,并为其添加1”,那么您需要取消引用 k。取消引用意味着“取其所指的任何价值。”我相信你可以看到这些是如何相关的。为此,您使用*运算符,如下所示:
*k++;