当前位置: 首页 > news >正文

第一个C语言代码(visual studin创建调试以及项目文件功能讲解)

这里我主要使用visual Studio进行编程

目录

一.创建项目

二.编写代码

1.代码编写

2.代码分析

3.main()

4.注释符

5.{} 花括号

6.声明

7.赋值

8.printf()函数

9.return 0;

一.创建项目

这里大家可能会比较疑惑,为啥都是C++,没看见C的项目,这里主要原因还是因为现在开发大型的项目以及以C++为主了,但这并不影响我们学习C语言,而且学习好C语言这也会为我们为后面学习C++打下坚实的基础。

这里红色方框就是项目名称,红色箭头指向的就是项目文件存储的位置。

这里的黄色部分“解决方案名称”的存储位置和项目名称一样就好了,为啥呢,因为项目就是包含在解决方案当中。这里要解释下,这个解决方案不会给你提供任何答案,它其实就是一个容器,用于包含一个或多个相关项目,以及生成信息,Visual studio窗口设置和不与特定项目关联的任何文件。

这里Visual studio一般采用两种文件类型.sln和.suo为后缀的文件

扩展名

属性

描述

.sln

Visual Studio 解决方案

将项目、项目项和解决方案项组织到解决方案中。

.suo

解决用户选项

存储用户级别设置和自定义项

解决方案由格式唯一的文本文件(扩展名 .sln)描述;不应对其进行手动编辑。 相反,.suo 文件是隐藏文件,在默认的文件资源管理器设置下不会显示。

这里先看右边红色大圆,这里一般创建完后会自动出现,在这个工具栏里面我们就可以创建相对应的文件。如果有没有出现的朋友,可以在上方的工具栏中选择视图->解决方案资源管理器,点击一下就出现了

右击解决方案里的源文件,点击新建项(文件)

这里选择C++文件,但记得在下方红圆部分把文件后缀改为.c

然后依次在头文件当中创建add.h头文件,和在资源文件当中创建add_function.c源文件。这里add_function.c源文件放在源文件文件夹和资源文件当中都可以。

二.编写代码

1.代码编写

这里我一共创建了三个文件,其实创建一个就够了,之所以创建三个是为了让朋友你能够更加具体的了解头文件和一些存放函数定义文件的概念

我们当前这个代码主要的任务就是打印int整型变量a,b值的和,这个功能我们主要用add函数实现

add.h:里面包含了add函数原型

add_function.c:包含add函数的定义,我这里使用#include "add.h"包含了add函数原型,其实不加也可以,但加上最好,因为这样可以让别人看你代码的时候知道你函数原型的位置。

add.c:这里就是我们程序的核心,它包含我们的主函数main。

源代码

add.c:

#include <stdio.h>        //<>括起来的存储在系统目录里面的头文件#include "add.h"        //""括起来的存储在当前项目的头文件文件夹当中int main(){int a=2, b=3;printf("%d + %d = %d\n",a, b, add(a, b));        //函数调用//%d = int类型占位符 \n=转义字符,换行符return 0;        }

add.h:

int add(int a, int b);        //函数原型//接受两个整数实参的值给到a,b//最后函数add返回一个int整数

add_function.c:

#include "add.h"int add(int a, int b)//函数定义{int c;        //块变量,离开当前函数则自动释放c = a + b;return c;        }这些代码写在一个文件里就是Add.c:#include <stdio.h>        //<>括起来的存储在系统目录里面的头文件int add(int a, int b);int main(){int a=2, b=3;printf("%d + %d = %d\n",a, b, add(a, b));        //函数调用//%d = int类型占位符 \n=转义字符,换行符return 0;        }int add(int a, int b)//函数定义{int c;        //块变量,离开当前函数则自动释放c = a + b;return c;}

2.代码分析

#include c语言预处理器指令

首先#include <stdio.h> 作用相当于将stdio.h头文件(特殊称呼,可以理解为在C程序顶部的信息集合被称为头文件)的所有内容输入到改行的所处位置。以< >括起来的存储在系统目录里面的头文件。这里教大家如何查找头文件地址

这里需要理解,函数库不在头文件当中,而链接则将要使用的函数从函数库当中给到文件当中使用。而头文件当中的属于函数原型。而函数库当中是函数定义。

首先右击#include <stdio.h>然后点击转到文档

然后点击右上角的stdio.h点击打开所在的文件夹就可以查看到了

" "括起来的存储头文件存储在当前项目的头文件文件夹当中,这类头文件一般就是开发者根据自己项目需求的不同而自己编写的相应函数声明以及一些参数。

而之所以叫这类文件叫头文件,很简单的理解就是,这类文件的引入一般都是在文件的最开始,处于文件内容顶部

同时也知道一般以#开始的都叫C预处理器指令,这类指令会在编译器运行之前工作。

3.main()

这里只要记住C程序必须要从 main()函数开始运行,而关于 int main() 这样的函数定义我们会在后面讲解,这里只要记住必须要这样写就好。然后记得最后return 0;

4.注释符

// 这就是我所用的,也是我比较推荐用的因为我用的多

如果你要编写多行注释 用 /*  这里写注释内容 */

而注释就是写进去的内容不会随便源代码被转换为机器语言,而是直接转换为空格

5.{} 花括号

花括号主要用于把函数中多条语句合并为一个单元模块,这里不理解也没事,先知道咋用就好了

6.声明

声明是C语言最重要的特性之一,这里num叫标识符(也叫变量),int 是整数的关键字,而表达不同数据类型的关键字还有很多,后面我们都会陆续讲解的。而int num把特定标识符与计算机内存中的特定位置联系起来,同时也确定了存储在内存对应位置的信息类型或数据类型

而关于变量命名记住只能用小写字母,大写字母,数字和下划线(_)组成,且变量开头必须只能是字母或下划线

而; 分号是C语言中语句的一部分,记住一句命令(指令)的后面必须要有一个分号不然就会报错

这里说下,声明变量一般要求放在文件开头,但C99和C11标准允许随便位置声明,所以根据自己具体需求进行声明。

同时在使用声明变量的时候记得一定要给值,不然变量里面存储的地址就是一个垃圾值

我们这里编写了一个简单赋值程序来讲解,这里我们需要以调试的方式运行程序,首先我们看到了黄色括号,我在printf那打了一个断点(可以简单理解为程序运行到这会停下,然后等待你的下一步命令)

这里再我们还未赋值的时候,虽然我们声明了a变量,但a变量里面其实存储的是一个垃圾值。

这里当我们给a赋值3后,程序会卡在return 0那块断点处(这里不打断点程序会自动结束了)。我们会发现有两个值,一个&a,a,我们会很明显&a一个是地址

0X00…这个是个十六进制的地址(这里稍微知道就好了,后面我们会讲的),a的值是3,而&a的类型是int *为整数指针(类似于一个内存中的路标,后面也会讲解的),a的类型是int

其实大家可能也看出来了,这两个其实都是一开始我们声明的a,只不过一个表示其地址,一个表示值。

这里我们使用printf打印了下变量值,这里需要知道下%p占位符主要是打印地址的。

而scanf_s大家可能不认识,这个其实是Visual Studio对原本的scanf函数的优化,不推荐大家用,因为这个函数移植性很差。

可以使用在文件头部使用#define _CRT_SECURE_NO_WARNINGS,记住这个一定要放在文件最上面。就可以正常使用scanf了。

7.赋值

num = 1; 是一条赋值表达式语句,意思是把值1赋给变量num

这里=的意思和在数学领域的意思就完全不一样了,数学上那属于等于,让num的值等于1,而在编程上面则是把1的值赋值到num这个地址上。

未赋值前存储的是0。

赋值3以后,该地址存储着3。

8.printf()函数

printf("%d + %d = %d\n",a, b, add(a, b)),这里一共要解决三个疑问点。%d,\n,add(a,b)

首先第一个%d是占位符(也叫转换说明),变量在内存当中都是以二进制进行存储的,使用的占位符不同,最后打印的效果都是不一样的。比如%f是但浮点数(精度一般的小数)的占位符(后面都会详细教的)

从这个小例子中我们可能很好的看出来,同一个变量,使用不同的占位符进行打印,所显示的效果都是不同的。占位符%d,%f必须在""当中,而所对应的值则在""后面,一一对应。

第二个就是转义字符,转义字符也叫非打印字符,后面会详细讲解,而这个\n转义字符的作业就是换行。

这里就可以很好的看见,第二个printf有了\n之后打印会自动跳转到下一行。

第三个add(a,b),这是一个函数调用。

   而函数可以先想象成一个交通工具,不同的交通工具使用条件和使用效果都是不一样的。int add(int a, int b);而转换到函数声明上面。第一个int就是返回值(使用效果)后面括号里面的int a, int b就是形参值(使用条件)

而add(a,b),就是把a,b的这两个具有具体参数的实参值赋值进去(想当于给车加汽油了)

这里只需要稍微了解下就好了,后面我们都会详细讲解的

9.return 0;

这就是标准的推出main()主调函数的结尾,记得加上就好了


 

好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~

如果朋友你感觉文章的内容对你有帮助,可以点赞关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈

 

相关文章:

第一个C语言代码(visual studin创建调试以及项目文件功能讲解)

这里我主要使用visual Studio进行编程 目录 一.创建项目 二.编写代码 1.代码编写 2.代码分析 3.main() 4.注释符 5.{} 花括号 6.声明 7.赋值 8.printf()函数 9.return 0; 一.创建项目 这里大家可能会比较疑惑&#xff0c;为啥都是C&#xff0c;没看见C的项目&…...

VIF原理

文章目录一、VIF公式和原理对于R方一般回归模型皮尔逊相关系数中的方差VIF原理&#xff1a;一、VIF公式和原理 所谓VIF方法&#xff0c;计算难度并不高。在线性回归方法里&#xff0c;应用最广泛的就是最小二乘法&#xff08;OLS&#xff09;&#xff0c;只不过我们对每个因子…...

nginx相关反爬策略总结笔记

引言 互联网站点的流量一部分由人类正常访问行为产生&#xff0c;而高达30%-60%的流量则是由网络爬虫产生的&#xff0c;其中一部分包含友好网络爬虫&#xff0c;如搜索引擎的爬虫、广告程序、第三方合作伙伴程序、Robots协议友好程序等;而并非所有的网络爬虫都是友好的&#x…...

【Vue3】电商网站吸顶功能

头部分类导航-吸顶功能 电商网站的首页内容会比较多&#xff0c;页面比较长&#xff0c;为了能让用户在滚动浏览内容的过程中都能够快速的切换到其它分类。需要分类导航一直可见&#xff0c;所以需要一个吸顶导航的效果。 目标:完成头部组件吸顶效果的实现 交互要求 滚动距离大…...

HOMER docker版本安装详细流程

概述 HOMER是一款100%开源的针对SIP/VOIP/RTC的抓包工具和监控工具。 HOMER是一款强大的、运营商级、可扩展的数据包和事件捕获系统&#xff0c;是基于HEP/EEP协议的VoIP/RTC监控应用程序&#xff0c;并可以使用即时搜索、处理和存储大量的信令、RTC事件、日志和统计信息。 …...

【数据结构】单向链表的练习题

目录 前言 1、删除链表中等于给定值val的所有节点。 【题目描述】 【代码示例】 【 画图理解】 2、反转一个点链表 【题目描述】 【 代码思路】 【代码示例】 【画图理解】 3、给定一个带有头节点head的非空单链表&#xff0c;返回链表的中间节点&#xff0c;如果有两个…...

我的企业需要一个网站吗?答案是肯定的 10 个理由

如果您的企业在没有网站的情况下走到了这一步&#xff0c;您可能会想&#xff1a;我的企业需要一个网站吗&#xff1f;如果我的企业没有一个就已经成功了&#xff0c;那又有什么意义呢&#xff1f;简短的回答是&#xff0c;现在是为您的企业投资网站的最佳或更重要的时机。网站…...

CHI协议定义的NOC组件

请求结点RN 可以向NOC发送读/写等请求事务&#xff0c;有以下几种类型的RN&#xff1a; RN-F 一般是处理器核或者核簇结点&#xff0c;包含了局部cache和一致性部件snoopee。与NOC上的一致性部件一起&#xff0c;维护“可缓存”数据的一致性&#xff08;这种可缓存数据…...

Python+Flask+MySQL开发的在线外卖订餐系统(附源码)

文章目录一、项目模块及功能介绍1、登录模块2、注册模块3、商家用户模块4、买家用户模块5、系统管理员模块源码二、项目结构三、环境依赖四、运行方法五、系统部分界面展示1、首页2、注册界面3、登录界面4、商家主界面5、商家菜单界面6、商家添加菜品界面7、商家修改菜品界面8、…...

OpenStack云平台搭建(4) | 部署Placement

目录 安装部署Placement 1、登录数据库授权 2、安装palcement-api 安装部署Placement 【Placement】服务 是从【nova】服务中拆分出来的组件&#xff0c;作用是收集各个【node】节点的可用资源&#xff0c;把【node】节点的资源统计写入到【MySQL】【Placement】服务会被【n…...

GNN图神经网络原理解析

一、GNN基本概念 1. 图的基本组成 图神经网络的核心就是进行图模型搭建,图是由点和边组成的。在计算机处理时,通常将数据以向量的形式进行存储。因此,在存储图时,就会有点的向量,点与点之间边的向量,全局向量(描述整张图),邻接矩阵(记录哪些点之间存在关联)等。 既…...

BI-SQL丨ALL、ANY、SOME

ALL、ANY、SOME ALL、ANY和SOME&#xff0c;这三个关键字&#xff0c;在SQL中使用频率较高&#xff0c;通常可以用来进行数据比较筛选。 注&#xff1a;SQL中ALL的用法和DAX中ALL的用法是完全不同的&#xff0c;小伙伴不要混淆了。 那么三者之间的区别是什么呢&#xff1f; A…...

从0到0.1学习 maven(三:声明周期、插件、聚合与继承)

该文章为maven系列学习的第三篇&#xff0c;也是最后一篇 第一篇快速入口&#xff1a;从0到0.1学习 maven(一&#xff1a;概述及简单入门) 第二篇快速入口&#xff1a;从0到0.1学习 maven(二&#xff1a;坐标、依赖和仓库) 文章目录啥子叫生命周期生命周期详解clean生命周期def…...

【直击招聘C++】2.5 this指针

2.5 this指针一、要点归纳1.什么是this指针2.this指针的深入讨论程序1程序23.类成员函数返回对象和返回对象引用的区别二、面试真题解析面试题1面试题2一、要点归纳 1.什么是this指针 this指针是隐含于每一个类对象的特殊指针&#xff0c;该指针值是一个正在被某个成员函数操作…...

spark数据清洗练习

文章目录准备工作删除缺失值 > 3 的数据删除星级、评论数、评分中任意字段为空的数据删除非法数据hotel_data.csv通过编写Spark程序清洗酒店数据里的缺失数据、非法数据、重复数据准备工作 搭建 hadoop 伪分布或 hadoop 完全分布上传 hotal_data.csv 文件到 hadoopidea 配置…...

Android 12首次开机启动Launcher前黑屏问题解析

在工作中&#xff0c;对于系统开发确实有些难度&#xff0c;特别是在开机阶段遇到的问题&#xff0c;比如开机动画播放完毕进入锁屏界面黑屏几秒然后进入 锁屏界面&#xff0c;这就需要根据开机日志来分析问题所在&#xff0c;在工作中遇到的几种黑屏情况做下记录首次开机进入L…...

使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 LSSVM的特性 1) 同样是对原始对偶问题进行求解&#xff0c;但是通过求解一个线性方程组&#xff08;优化目标中的线性约束导致…...

动态规划-背包问题

文章目录一、背包问题1. 背包问题简介2. 背包问题解决方法二、01 背包问题1. 实现思路2. 实现代码三、完全背包问题1. 实现思路2. 实现代码四、多重背包问题&#xff08;一&#xff09;1. 实现思路2. 实现代码五、多重背包问题&#xff08;二&#xff09;1. 实现思路2. 实现代码…...

计算24点与运算符重载

十几年前写过一个算24点的程序。记得当时有点费劲&#xff0c;不过最后总算捣鼓出来了。前几天突然想再写一次&#xff0c;结果轻松地写出来了。C&#xff0c;总行数不多&#xff0c;带命令行界面和注释共200行不到&#xff1b;利用了面向对象和运算符重载来简化代码。 首先谈…...

MES系统智能工厂,搭上中国制造2025顺风车

MES在电子制造业中的应用日益广泛&#xff0c;越来越多的厂商已经购置或自行开发了MES&#xff0c;并将其作为“智能化工厂”。国内大大小小、各行各业都有上百个MES系统&#xff0c;还有很多的国外MES系统&#xff0c;怎么才能在MES系统公司中找到适合自己的MES&#xff1f;希…...

【LeetCode】每日一题(1)

目录 题目&#xff1a; 解题思路&#xff1a; 代码&#xff1a; 写在最后&#xff1a; 题目&#xff1a; 这是他给出的接口&#xff1a; class Solution { public:int fillCups(vector<int>& amount) {} }; 作为一个数学学渣&#xff0c;我想不出厉害的数学算法…...

SpringCloud-Netflix学习笔记11——Hystrix实现服务降级

服务降级 是什么&#xff1f; 整体资源快不够了&#xff0c;忍痛将某些服务先关掉&#xff0c;待渡过难关&#xff0c;再开启回来。 如下图&#xff0c;在某一个时间段&#xff0c;访问服务A的请求特别多&#xff0c;而访问服务B和服务C的请求特别少&#xff0c;这时我们可以把…...

Oracle Dataguard(主库为 Oracle rac 集群)配置教程(03)—— 创建 dataguard 数据库之前的准备工作

Oracle Dataguard&#xff08;主库为 Oracle rac 集群&#xff09;配置教程&#xff08;03&#xff09;—— 创建 dataguard 数据库之前的准备工作 / 本专栏详细讲解 Oracle Dataguard&#xff08;Oracle 版本为11g&#xff0c;主库为双节点 Oracle rac 集群&#xff09;的配置…...

零代码做分析报表的bi软件才是好软件

有些数据分析软件对IT的依赖比较重&#xff0c;在制作报表的过程中需要用到SQL&#xff0c;这就导致了IT人员懂技术不懂业务&#xff0c;业务人员懂业务不懂技术&#xff0c;数据分析做来做去总是差点什么的局面。要是遇到了IT部门相对较弱的情况&#xff0c;还会加重IT负担&am…...

linux ALSA 驱动架构

一、kernel Audio驱动架构主流有两大类&#xff0c;一类是SOC Machine架构&#xff0c;另一类是simple-card架构。 MTK、QCom主要采用machine架构&#xff0c;rockchip采用simple card架构。 二、Machine架构驱动介绍 machine 架构每家平台实现并不完全相同&#xff0c;mach…...

JDK 8 JVM内存结构详解

前言 本文所介绍的是 JDK 1.8 版本&#xff0c;其他版本的 JDK 在这里并不一定正确&#xff1b;内容主要摘自周志明的《深入理解Java虚拟机》一书的关键点&#xff0c;并根据自身的理解进行记录。感兴趣的同学可以去阅读原著。 JVM 的内存结构&#xff0c;主要包括以下 5 个区…...

黑马程序员 Linux 教程

目录Linux 简介不同应用领域主流操作系统Linux 系统历史Linux 系统版本Linux 安装安装方式网卡设置安装 SSH 连接工具使用 FinalShell 连接到 LinuxLinux 和 Windows 目录结构对比Linux 目录介绍Linux 常用命令Linux 命令初体验Linux 命令使用技巧Linux 命令格式文件目录操作命…...

文件操作 -- IO

文章目录文件操作 -- IO文件 :文件路径 :文件的类型java 中的文件操作文件内容的相关操作字节流的读和写操作字符流的读和写操作代码案例代码案例一 &#xff1a;代码案例二 &#xff1a;代码案例三 &#xff1a;文件操作 – IO 文件 : 文件相比大家都不陌生把 &#xff0c; 打…...

FPGA解析串口协议帧3.0版本,增加了错误重发功能,提供仿真文件以及源码

FPGA解析串口协议帧已经发布2个版本了&#xff0c;分别如下&#xff1a; 版本1&#xff1a;点击查看版本1 版本1详细介绍了串口协议帧的帧组成和设计思想&#xff0c;但设计粗糙&#xff0c;注释不详细&#xff1b; 版本1&#xff1a;点击查看版本2 版本2优化了代码&#xff0c…...

365天深度学习训练营 第P6周:好莱坞明星识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 内部限免文章&#xff08;版权归 K同学啊 所有&#xff09;&#x1f366; 参考文章地址&#xff1a; &#x1f517;第P6周&#xff1a;好莱坞明星识别 | 365天深度学习训练营&#x1f356; 作者&#xff1a;K同学啊 | 接…...