C语言学习——从零开始学编程(番外篇:新手可能会遇到的几个问题以及养成好的代码风格)

本文将介绍一些小白会遇到的问题以及一些好的代码风格~
配套专栏:C语言学习——从零开始学编程。文章末尾会附上专栏博客的链接(会不断更新的哦~~)


小颖的话:

作为编程小白,你一定曾因为不会使用VS,导致一直出错而苦恼,你一定曾羡慕别人的代码写的干净漂亮,但是自己写的却一团乱麻……那么打开这篇文章就对啦!本文衔接C语言学习——从零开始学编程专栏的第一篇、第二篇,解答一部分小颖在刚刚接触编程时遇到的一些小问题。


一、关于Visual Studio的一些问题

1.关于主函数过多的问题

在小颖刚刚开始用VS这个软件写代码的时候,会犯这样的一个傻错误:为了节省时间,不想在下一次打代码的时候创建新的工程,而是直接点开已经建立过的一个工程,在这个工程中又创建源文件,然后直接就敲出来了#include<stdio.h>.....int mian(){}这一系列的代码然后Ctrl+F5直接运行然后报错,像这样:
在这里插入图片描述
然后第一次在之前文件的基础上创建新文件
在这里插入图片描述
然后再新源文件里打代码
在这里插入图片描述
然后报错:
在这里插入图片描述
唉?为什么说主函数重定义了呢?
这个其实和我们进阶部分最后要说的程序的编译有关,这里先简单解释一下原因。
之前我们说过,一个工程里有且只有一个主函数,如果多了,计算机不知道要从哪里进入开始运行。因为最后所有的源文件和头文件都要通过链接而汇总到一块,所以在一个工程里(工程简单来说就是下面这个红框里的东西),只能有一个主函数。在这里插入图片描述
而你在两个源文件里都各自写了一个主函数,不报错才怪。

2.关于scanf函数的报错以及解决问题

如果要运行下面这个代码(输入一个数并打印它):

#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	printf("%d",num);
	return 0;
}

你会发现编译器报错了:
在这里插入图片描述
返回值被忽略可以不用管他,因为这个并不是阻挠你运行的原因。而是下面这一行:这个函数不安全,建议使用scanf_s来代替scanf函数。你可以使用_CRT_SECURE_NO_WARNINGS来使编译器不报错。
当然你可以使用scanf _s这个函数代替,但是不建议,因为这只是VS给你提供的解决方案,scanf是VS自己的函数,当别人用你的代码在其他编译器上编译的时候,它可不一定认识你的scanf_s然后导致报错。这导致你的代码的可移植性就太差了。
所以建议直接在该文件第一行加上这句话:#define _CRT_SECURE_NO_WARNINGS 就解决问题了

有没有一劳永逸的方式呢??? sure!现在带你进行操作,让你在建立新源文件的时候自动加上#define _CRT_SECURE_NO_WARNINGS 上图!这时候就显示了第一篇让你记住下载路径的重要了。
在这里插入图片描述
上图只是小颖电脑里的路径,你的不一定是在同样的盘里。但是,你只要找到一个叫这个名字文件:newc++file.cpp

接下来,把它复制一份放在桌面上,打开桌面上的这个文件然后然后在第一行输入这样的话(本来是啥都没有的):
在这里插入图片描述
然后保存在桌面上:
在这里插入图片描述
找到刚刚的路径,给这个文件替换掉
在这里插入图片描述
然后当你在VS上再新建文件的时候,就会在第一行自动加上#define _CRT_SECURE_NO_WARNINGS 了。

二、关于主函数等写法的问题

有时候在看一些C语言课本的时候会发现这样的写主函数的方式:

int main(){
	return 0;
}

但是好好听课的同学会知道,我们第一堂课里是说要这么写:

int main()
{
	return 0;
}

主函数之后的半个大括号 { 的位置貌似不太一样
其实这两段代码是一样的,因为(除在字符串、字符里之外,当然还有一些运算符里掺杂空白所导致的问题,由于这个大家对这些还不是很了解,先不介绍了)在编译的时候,空白(包括空格符,制表符和换行符)都会被自动忽略,有没有是一样的
所以如果你愿意,还可以这样写主函数

int main
(
)
{
	return 0;
}

是完全没有问题的,但是无疑这样写代码观赏性很差。所以我们采用好看还层次分明的写法即第一篇博客里说的那样的模板。
所以接下来要介绍到一些好的代码风格。

3.一些好的代码风格

1)括号、引号成对打

引号、括号成对打无论是() {} []还是"" ''打完的时候都要看一看是不是成对的打的
尤其是{ }很多人在各种循环和选择语句的大括号里“迷失了自我”由于循环套循环套选择套太多了,导致自己完全晕了
所以建议是{}各占一行,且上下对齐比如:

for (i = 0; i < 2; i++)
{							//这个括号输入上面的for就和上面的for对齐
	for (j = 0; j < 2; j++)
	{
		if(j != i)
		{					//这个括号输入if所以和if对齐
			printf("hello\n");
		}	
	}
}

2)适当“留白”的美感

同时,为了让代码不是这么挤或者乱,让代码看起来很整齐,可以适当的加一些空格
比如把上面的代码这样写:

for (i = 0; i < 2; i++)
{							
for (j = 0; j < 2; j++)
{
if(j != i)
{					
printf("hello\n");
}	
}
}

或者这样写(其实下面这种还可以,但是当你写的代码很复杂就丑了):

for(i=0;i<2;i++)
{							//这个括号输入上面的for就和上面的for对齐
	for(j=0;j<2;j++)
	{
		if(j!=i)	
		{				//这个括号输入if所以和if对齐
			printf("hello\n");
		}
	}
}

是不是能明显的感觉到一个空格,制表符还有回车(换行)这些空白的作用。
留白往往会给观众一种美感,无论在文学中还是计算机中,道理是相同的哈哈。

3)变量名取的要有意义一点

变量一般推荐用英文缩写比较好,这样识别度比较高。比如数字用 num(number),字符用 ch(character),人名name,数据data 这样之后使用的时候比较方便。因为一旦变量创建很多的时候意思一旦弄混,会产生很多问题。

同时,如果你知道一些常用的英文缩写习惯,看别人的代码的时候也比较方便,比如flag(标志),count(计数),c(一般指行数),r(一般指列数),i(一般指次数)……
当然这样别人看你的代码时候也很容易明白想表达的意思。一举三得哦。


结束语

当然无论是VS工具的使用还是代码风格的养成,这些都只是小白比较常见的遇到的问题,但是随着我们后来的学习,你会发现更多问题并有更好地解决方式。所以今天就介绍到这里。来日方长,下篇博客见。
C语言学习系列博客链接:(持续更新中)
第一篇:http://t.csdn.cn/I4Eip
第二篇:http://t.csdn.cn/Brz4y

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dddua

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值