第一个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; 一.创建项目 这里大家可能会比较疑惑,为啥都是C,没看见C的项目&…...

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

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

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

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

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

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

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

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】服务中拆分出来的组件,作用是收集各个【node】节点的可用资源,把【node】节点的资源统计写入到【MySQL】【Placement】服务会被【n…...

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

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

从0到0.1学习 maven(三:声明周期、插件、聚合与继承)
该文章为maven系列学习的第三篇,也是最后一篇 第一篇快速入口:从0到0.1学习 maven(一:概述及简单入门) 第二篇快速入口:从0到0.1学习 maven(二:坐标、依赖和仓库) 文章目录啥子叫生命周期生命周期详解clean生命周期def…...
【直击招聘C++】2.5 this指针
2.5 this指针一、要点归纳1.什么是this指针2.this指针的深入讨论程序1程序23.类成员函数返回对象和返回对象引用的区别二、面试真题解析面试题1面试题2一、要点归纳 1.什么是this指针 this指针是隐含于每一个类对象的特殊指针,该指针值是一个正在被某个成员函数操作…...
spark数据清洗练习
文章目录准备工作删除缺失值 > 3 的数据删除星级、评论数、评分中任意字段为空的数据删除非法数据hotel_data.csv通过编写Spark程序清洗酒店数据里的缺失数据、非法数据、重复数据准备工作 搭建 hadoop 伪分布或 hadoop 完全分布上传 hotal_data.csv 文件到 hadoopidea 配置…...
Android 12首次开机启动Launcher前黑屏问题解析
在工作中,对于系统开发确实有些难度,特别是在开机阶段遇到的问题,比如开机动画播放完毕进入锁屏界面黑屏几秒然后进入 锁屏界面,这就需要根据开机日志来分析问题所在,在工作中遇到的几种黑屏情况做下记录首次开机进入L…...

使用 LSSVM 的 Matlab 演示求解反常微分方程问题(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 LSSVM的特性 1) 同样是对原始对偶问题进行求解,但是通过求解一个线性方程组(优化目标中的线性约束导致…...

动态规划-背包问题
文章目录一、背包问题1. 背包问题简介2. 背包问题解决方法二、01 背包问题1. 实现思路2. 实现代码三、完全背包问题1. 实现思路2. 实现代码四、多重背包问题(一)1. 实现思路2. 实现代码五、多重背包问题(二)1. 实现思路2. 实现代码…...
计算24点与运算符重载
十几年前写过一个算24点的程序。记得当时有点费劲,不过最后总算捣鼓出来了。前几天突然想再写一次,结果轻松地写出来了。C,总行数不多,带命令行界面和注释共200行不到;利用了面向对象和运算符重载来简化代码。 首先谈…...

MES系统智能工厂,搭上中国制造2025顺风车
MES在电子制造业中的应用日益广泛,越来越多的厂商已经购置或自行开发了MES,并将其作为“智能化工厂”。国内大大小小、各行各业都有上百个MES系统,还有很多的国外MES系统,怎么才能在MES系统公司中找到适合自己的MES?希…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理
在城市的某个角落,一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延,滚滚浓烟弥漫开来,周围群众的生命财产安全受到严重威胁。就在这千钧一发之际,消防救援队伍迅速行动,而豪越科技消防一体化安全管控平台构建的消防“…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案
引言 在分布式系统的事务处理中,如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议(2PC)通过准备阶段与提交阶段的协调机制,以同步决策模式确保事务原子性。其改进版本三阶段提交协议(3PC…...