这里我主要使用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()主调函数的结尾,记得加上就好了
好了朋友们我们今天的内容到这就结束了,今天的内容到这里就结束了,如果有啥不会的朋友记得论坛里面提问哈~
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈