关于DEVc++使用技巧和C语言中的一些疑问

  自己对C不太了解,导致写程序的时候遇到很多问题,对于熟悉C的人来说,这可能不值一提。但是为了自己能有能够更好地理解,还是做下笔记。

一、关于DEVc++使用技巧

头文件引入:

  1. #include <iostream>
    #include是标准的C++头文件,任何符合标准的C++开发环境都有这个头文件。
    作为iostream(.h)库的一部分,头文件<iostream(.h)>声明了一些用来在标准输入输出设备上进行输入输出操作的对象。
  2. using namespace std;
    在旧的标准C++中,使用#include<iostream.h>,但在新标准中,用#include,而且在VC中编程的同时要注意要添加命名空间(std):using namespace std;
    头文件包含了以下对象:

窄字符(char)

  • cin:标准输入流
  • cout:标准输出流
  • cerr:错误的标准输出流
  • clog:用于记录的标准输出流

宽字符(wchar_t)

  • wcin:标准输入流(宽)
  • wcout:标准输出流(宽)
  • wcerr:错误的标准输出流(面向广角)
  • wclog:用于记录的标准输出流(宽)

DEVc++的坑

  DEVc++感觉界面挺好看,代码有不同的高亮,更加清晰明了。但是好像错误提示有点弱,今天我在写一个判断应该写 == 结果粗心写成了 = ,但并没报错,然后运行的结果一直不对,看了半天才排查出来。哎,可能还是自己菜。不知道VC6.0有没有这样的报错提示。

[Error] ‘:main’ must return "int’

   再devcpp上运行,报错信息[Error] ‘:main’ must return “int”,查了资料后,网上有人说:
main函数必须返回int类型。这个要求是C99提出的,所以采用C99及以后标准的编译器,都会强制要求main函数返回int类型。即这样:

int main()
{
    
    
    ...
    return 0;
}

  而现在很多书都不注意规范,用着老编译器,这种事情毫不在意,写成main()void main()的屡见不鲜,这个需要个人注意,严格按照标准来。

二、C中的定义

  • 问题一:typedef int SElemType; 为什么要这样定义?
    定义不同的数据类型名称是为了程序的可读性。一旦你需要将类型变换比如使用double型的,只要写:
    typedef double ElemType;如果没有定义的话就要一个个的把int改成double,这样操作起来会很麻烦。

  • 问题二:#define STACKINCREMENT 10什么意思?
    #define是C语言中的一个预处理指令,其中的“#”表示这是一条预处理命令·。表示定义一个常量 STACKINCREMENT,而且一定不要加 分号,要不然程序报错。其定义的一般形式为:

    #define 标识符 字符串
    
  • 问题三:typedef相关的是啥?

typedef struct{
    
    		//栈结构类型定义(栈顶指针、栈低指针、栈大小)
	SElemType *base;
	SElemType *top;
	int stacksize;
}SqStack;

  typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。具体区别在于:

若struct node{ }这样来定义结构体的话。在定义 node 的结构体变量时,需要这样写:struct node n;

若用typedef,可以这样写:typedef struct node{}NODE; 。在申请变量时就可以这样写:NODE n;

其实就相当于 NODE 是node 的别名。区别就在于使用时,是否可以省去struct这个关键字。

猜你喜欢

转载自blog.csdn.net/wjx666666/article/details/102463202