当前位置:网络安全 > vs2019 C window_VS2019教程(使用VS2019编写C语言程序)

vs2019 C window_VS2019教程(使用VS2019编写C语言程序)

  • 发布:2023-10-01 18:28

VS2019教程(使用VS2019编写C语言程序)

接下来《VS2019下载地址和安装教程》,本节将介绍如何使用VS2019编写和运行C语言程序。

例如,在VS2019中编写并运行以下C语言代码:

#包括

int main()

{

put("C语言");

返回0;

}

您需要执行以下步骤。

1。创建项目

打开VS2019,进入如下界面:

图1 VS2019启动界面

选择“Continue without code”,进入VS主界面,如下图:

图2 VS2019主界面

在菜单中选择“文件->新建->项目”,会弹出如下窗口:

图3 创建空项目

选择“空项目”,点击“下一步”,进入“配置空项目”窗口,如下图:

图4 配置空项目

这里可以自定义项目的名称和存储位置,然后点击“创建”按钮即可成功创建一个空项目,如下图:

图5 创建MyDemo空项目

2。添加源文件

右键单击“源文件”,在弹出的菜单中选择“添加-->新建项”,如下图:

图6 添加源文件

在弹出的窗口中选择“C++文件”,修改新文件的名称(比如我创建的源文件是demo.c),如下图:

图7 自定义源文件

点击“添加”按钮,成功创建名为demo.c的源文件,如下图:

图8 C语言源文件成功创建

3。编写代码并运行程序

将本文开头的C语言程序添加到图8所示的demo.c文件中,如下所示:

图9 编辑源码

点击“Local Windows Debugger”开始运行demo.c文件,如下图:

图10 运行程序

总结

现在,您可以与您的朋友分享MyDemo.exe,并告诉他们这是您编写的第一个C语言程序。虽然这个程序很简单,但是你已经通过了第一道坎,学会了如何编写代码以及如何将代码变成可执行程序。这是一次完整的体验。

在本教程的基础部分,我们将教你编写的程序都是这样的“黑窗口”。与我们平时使用的软件不同,它们没有漂亮的界面,也没有复杂的功能。只能看到部分文字。这就是控制台应用程序(Console Application),它和DOS很相似,早期的计算机程序都是这样的。

控制台程序虽然看起来比较枯燥,但是非常简单,适合入门,让大家学习编程的基础知识;只有巩固基本技能,才能开发出健壮的GUI(图形用户界面)程序。即具有接口的程序。

目录

1。什么是调试?它有多重要?

2.?调试的基本步骤?

3。调试和发布简介。

4。常用调试快捷键

4.1 调试时查看程序当前信息

1 查看临时变量的值

2 查看内存信息?

?3 查看调用堆栈

4 查看编译信息

?5 查看注册信息

5。一些调试示例

?6。如何编写好的(易于调试)代码。

6.1 优秀代码:

6.2 演示编写合格的代码

6.3 const

的作用

7。常见的编程错误

7.1 编译错误

7.2 链接错误

7.3 运行时错误

1。什么是调试?它有多重要?

调试就是为了发现bug(bug就是我们的程序出错的原因)。

发生的一切都必须是可追溯的。如果问心无愧,就没有必要掩盖,也不会有任何痕迹。如果你问心无愧,

必须掩盖,那就一定有迹象。迹象越多,就越容易跟上趋势。这就是推理的方式。

沿着这条路顺流而下是犯罪,逆流而上才是真理。

一个好的程序员就是一个好的侦探。

每一次调试都是试图破案的过程。

2.?调试的基本步骤?

发现程序存在错误

通过隔离、消除等方式定位错误。

确定错误原因

提出纠正错误的解决方案

纠正程序错误并重新测试

3。调试和发布简介。

Debug常称为debug版本(程序员版本)

,包含了调试信息,并且没有做任何优化,方便程序员调试程序。

Release称为发布版本(用户版本)

,它经常会进行各种优化,让程序在代码大小和运行速度上达到最

非常适合用户使用。

以以下代购为例:

int main()

{

int arr[10] = { 0 };

for (int i = 0; i < 10; i++)

{

arr[i] = i;

}

for (int i = 0; i < 10; i++)

{

printf("%d ", arr[i]);

}

返回0;

}

?对比Debug版本和Release版本的代码,可以发现Release版本的代码的可执行文件比Debug版本的要小

选择Debug调试代码,选择Release不调试代码

4。常用调试快捷键

本文使用的IDE是VS2019。我们将在VS2019中调试

最常用的快捷键:

F5

开始调试,常用于直接跳到下一个

断点。

F9

创建断点和取消断点

断点的重要作用是可以在程序的任意位置设置断点。

这允许程序在所需位置停止执行并继续逐步执行。

F10

Process-by-process,通常用于处理一个进程。过程可以是函数调用或语句。

F11

Statement by statements就是每次执行一条语句,但是这个快捷键可以让我们的执行逻辑进入到函数中(

这是最常用的

)。

CTRL + F5

无需调试即可开始执行。如果你想让程序直接运行而不需要调试,可以直接使用。

4.1 调试时查看程序当前信息

1 查看临时变量

的值

?

2 查看内存信息?

?

?3 查看调用堆栈

4 查看编译信息

第一种方法:

?第二种方法:

?5 查看注册信息

5。一些调试示例

1。示例1:实现代码:查找

1

+2

+3

...+ n!

;不考虑溢出。

int main()

{

int i = 0;

int sum = 0;//保存最终结果

int n = 0;

int ret = 1;//保存n

的阶乘

scanf("%d", &n);

对于 (i = 1; i <= n; i++)

{

int j = 0;

对于 (j = 1; j <= i; j++)

{

ret *= j;

}

总和 += ret;

}

printf("%d\n", sum);

返回0;

}

//问题是每次使用后ret不重置

此时,如果我们是3,我们期望输出9,但实际输出是15。

为什么?

这里我们必须找到我们的问题。

1。首先猜测问题的原因。最好初步确定问题的可能原因。

2。实际动手调试是必要的。

3。调试的时候我们有个好主意

2。示例2(重要):

#包括

int main()

{

int i = 0;

int arr[10] = { 0 };

对于 (i = 0; i <= 12; i++)

{

arr[i] = 0;

printf("呵呵\n");

}

返回0;

}

//程序无限循环

研究一下程序死循环的原因。

?我们发现i和arr[12]的地址是相同的,即i就是arr[12]! ! ! !

分析:

?6。如何编写好的(易于调试)代码。

6.1 优秀代码:

1。代码运行正常

2。很少有bug

3。高效率

4。高可读性

5。可维护性高

6。清除评论

7。完整的文档

常见

编码

小贴士:

1。使用断言

2。尝试使用 const

3。培养良好的编码风格

4。添加必要的评论

5。避免编码陷阱。

6.2 演示编写合格的代码

使用仿真实现库函数:

strcpy解释一下

#包括

char* my_strcpy(char* dest, const char* src)

{

char* ret = dest;

assert(dest && src);//断言

while (*dest++ = *src++)

{

;

}

返回ret;

}

int main()

{

char arr1[20] = "xxxxxxxxxx";

//xxxxxxxxx

char arr2[] = "你好";

printf("%s\n", my_strcpy(arr1, arr2));

返回0;

}

6.3 const

的作用

#包括

//代码1

无效测试1()

{

int n = 10;

int m = 20;

int* p = &n;

*p = 20;//可以吗?

p = &m; //可以吗?

}

无效测试2()

{

//代码2

int n = 10;

int m = 20;

const int* p = &n;

*p = 20;//可以吗?//否

p = &m; //可以吗?//可以

}

无效测试3()

{

int n = 10;

int m = 20;

int* const p = &n;

*p = 20; //可以吗?//可以

p = &m; ?//可以吗?//不行

}

int main()

{

//无成本测试

test1();

//测试常量放在*

的左边

test2();

//测试常量放在*

右边

test3();

返回0;

}

结论:

const修改指针变量时:

1。如果const放在*左边,则修改指针指向的内容,保证指针指向的内容不能通过指针改变。但指针变量本身的内容是可变的。

2。如果const放在*右边,则修改指针变量本身,保证指针变量的内容不能被修改,但可以通过指针改变指针指向的内容。

模拟并实施

strlen函数

#包括

int my_strlen(const char* str)

{

整数计数 = 0;

断言(str!= NULL);

while (*str)//判断字符串是否结束

{

计数++;

str++;

}

返回计数;

}

int main()

{

const char* p = "abcdef";

//测试

int len ​​= my_strlen(p);

printf("len = %d\n", len);

返回0;

}

7。常见的编程错误

7.1 编译错误

直接查看错误信息(双击)即可解决问题。或者你可以凭经验来做。比较简单。

编译时经常出现语法错误(通常是语法错误)

7.2 链接错误

看错误信息,主要是在代码中找到错误信息中的标识,然后定位问题。通常标识符名称不存在或拼写错误。

7.3 运行时错误

通过调试逐步定位问题。最难做的事。 (通常是逻辑错误)

本文介绍了如何在VS2019中使用Windows桌面应用程序模块创建Win32窗口,分享给大家。详情如下:

头文件Project1.h:

#pragma Once

#include "resource.h"

实现文件Project1.cpp:

// Project1.cpp:定义应用程序的入口点。

//

#include "framework.h"

#include "Project1.h"

#define MAX_LOADSTRING 100

//全局变量:

实例 hInst; // 当前实例

WCHAR szTitle[MAX_LOADSTRING]; // 标题栏文本16位双字节字符

WCHAR szWindowClass[MAX_LOADSTRING]; // 主窗口类名

// 此代码模块中包含的函数的前向声明:

ATOM MyRegisterClass(HINSTANCE hInstance); //返回无符号短2字节整数

BOOL InitInstance(HINSTANCE, int);

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); //返回长4字节整数作为地址

INT_PTR CALLBACK 关于(HWND, UINT, WP

相关文章