相关疑难解决方法(0)

int main()和void main()如何工作

我是C语言的初学者.任何人都可以使用示例详细解释main(),int main(),void main(),main(void),void main(void),int main(void)如何在C语言中工作?正如在我们使用void main()时所发生的事情以及当我在简单语言中使用int main()时发生的事情等等.
我知道,但无法理解它在做什么:

  1. main() - 函数没有参数
  2. int main() - 函数返回int值
  3. void main() - 函数返回任何内容等.

当我使用int main()返回0编写简单的hello world时,它仍然给出与使用void main()时相同的输出,那么它是如何工作的?它的应用是什么?

c void

13
推荐指数
2
解决办法
9万
查看次数

如何在SDL 2.0中绘制像素?

如何在SDL2.0中使用像素绘制?

我正在尝试熟悉C++,但如果没有漂亮的图片,这很难做到,所以我试图让一个非常基本的图形显示器运行.我真正想做的就是给我一个窗口,让我在其上绘制rgbα像素,并访问有关这些像素的信息.我可能还有其他我不想要的东西,但现在就在我的名单上.我对此的研究使我尝试使用SDL,当前版本为2.0.

几乎所有的图形体验都来自于使用JavaScript <canvas>.大多数其他位的是来自我的计算器,它有这个真的真棒Pxl-On()命令,那么容易.

我正在使用MinGW作为我的C++,如果重要的话.此外,如果有更好的东西比SDL2.0更适合我需要的东西,建议欢迎.


**"更好"意味着"包含我需要的功能,但总功能少于SDL2.0,和/或具有比SDL2.0更直观/更简单的***API."

***减少完成相同任务的代码行.

c c++ sdl sdl-2

12
推荐指数
2
解决办法
3万
查看次数

为什么隐式转换在累积中不起作用?

这是C++程序:

#include <iostream>
#include <vector>
#include <numeric>
using namespace std;

int test_string(const string & str) {
    return str.size();
}

void main() {
    test_string("");                                     //can compile
    vector<string> v;
    string sum = accumulate(v.cbegin(), v.cend(), "");   //cannot compile
}
Run Code Online (Sandbox Code Playgroud)

我想使用隐式转换,从const char *string仿制STL函数的调用accumulate.我知道转换const char *为字符串不是显式的,因此我们可以将const char *参数传递给需要string类型的调用.这可以通过上述test_string功能证明.但当我做同样的事情时accumulate,编译器抱怨:

error C2440: '=': cannot convert from 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' to 'const char *'
Run Code Online (Sandbox Code Playgroud)

代码工作只有当我更换""使用string("").我不明白为什么隐式转换适用于我的自定义函数但不起作用accumulate.你能解释一下吗?非常感谢.

PS:我正在使用Visual Studio 2015.

c++ string templates implicit-conversion

12
推荐指数
2
解决办法
619
查看次数

为什么返回0是可选的?

为什么,如果我写

int main() 
{ 
    //... 
}
Run Code Online (Sandbox Code Playgroud)

return 0;main功能结束时我不需要写吗?编译器是否为我做了?

我用的是GCC/C99.

c

11
推荐指数
2
解决办法
6511
查看次数

C++ - int main(int argc,char**argv)

可能重复:
主要的正确声明是什么?

这个main函数中的参数是什么意思?他们想告诉我们什么?

int main(int argc, char** argv)

更新:并且,前面的代码行是否类似于此int main(int argc, char* argv[])?如果是这样,我们怎么能说char** argv类似char* argv[],因为他们不看从类似阵列的观点?

如何与int main()没有任何论据进行比较?

谢谢.

c++ program-entry-point arguments

11
推荐指数
1
解决办法
6万
查看次数

我们可以在Unix编译器中使用wmain()函数,还是只能在windows上使用?

我们可以在Unix编译器中使用wmain()函数,还是只在\ for windows上使用?

c c++ unix widestring wmain

10
推荐指数
2
解决办法
3405
查看次数

用空参数列表主要与void的参数列表不同吗?

可能重复:
为什么C和c ++中的main函数的类型留给用户定义?

什么是虚空?有人提供一些例子,正确使用虚空吗?当我们写void main (void)或有main()什么区别?

c program-entry-point void

10
推荐指数
1
解决办法
4万
查看次数

为什么main(int argc,char*argv [])有两个参数?

我一直认为这argc是标志结束的必要条件,argv但我只是argv[argc] == NULL按照定义学到了这一点.我认为这argc完全是多余的吗?如果是这样,我一直认为C以效率的名义取消冗余.我的假设是错误的还是背后的历史原因?如果原因是历史性的,你能详细说明吗?

c argv argc

10
推荐指数
1
解决办法
650
查看次数

在C++ 11中,没有返回类型的main的使用是否逐步淘汰?

Stephen Prata在他的着作C++ Primer Plus [p 31]中说:

许多现有程序使用经典的C函数头代码:

main() // original C style

在经典C下,省略返回类型与声明函数类型为int相同.但是,C++已逐步淘汰了这种用法.

但是C++ 11草案3.6.1-> 2说

实现不应预定义主函数.此功能不应过载.它应该具有int类型的返回类型,否则其类型是实现定义的.

测试结果

$ g++ -Werror=pedantic MainCheck.cpp -o MainCheck
MainCheck.cpp:3:6: error: ISO C++ forbids declaration of ‘main’ with no type [-Werror=pedantic]
 main()
$ # also means g++ don't conform to the standard
Run Code Online (Sandbox Code Playgroud)

确认普拉塔先生在C++标准方面所说的是正确的.

C++ 11草案中是否有一个条款不鼓励使用:

main() // that is without return type.
Run Code Online (Sandbox Code Playgroud)

它的返回类型应为int类型

本身这样一个条款?

c++ c++11

10
推荐指数
2
解决办法
1621
查看次数

正确声明ANSI C中的main()函数

C标准说:

程序启动时调用的函数名为main.该实现声明此函数没有原型.它应该使用int的返回类型定义,并且没有参数:

int main(void) { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

或者有两个参数(这里称为argc和argv,虽然可以使用任何名称,因为它们是声明它们的函数的本地名称):

int main(int argc, char *argv[]) { /*
... */ }
Run Code Online (Sandbox Code Playgroud)

或等效的或以某种其他实现定义的方式.

但是,Kernighan&Ritchie在他们的第二版(规范的ANSI C)圣经中使用:

main()
{
  /* taram pampam ... */

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

谁是对的?它是否与函数没有返回值自动假设int在C中返回?

c kr-c

9
推荐指数
1
解决办法
6553
查看次数