C语言学习(二)--C语言基础学习

今天是C语言的第二次学习,经过上次的软件配置之后,就可以进行C语言的编写和运行了,但是万丈高楼平地起,因此,需要对一些C语言的基础知识有一定的认识,才会在后续的学习中不会出现晕乎乎的感觉,这就是本次学习的主要内容,以下为本次的目录,不多说,开整!

头文件

什么是头文件呢,顾名思义就是写在开头的文件喽。它有什么作用呢?其作用是告诉机哥,哦不对是机器,我们将要编写引入一个文件,例如#include,这表示我们将要引入一个标准的输入输出头文件即standard input output header file,在声明了头文件之后,即可在文件里编写输入输出函数,一般就是写在.c文件的开头。

主函数

主函数的定义方式

主函数的定义方式有两种,但是另外一种已经很少使用了,如果各位感兴趣可以自行查询,目前最为广泛使用的便是int main(){}这种定义主函数的方式,也许你会疑问为什么要写这行呢,其实,这是为了告诉电脑:程序的入口就在这里哦,快进来执行吧,这样电脑才能知道从哪里开始执行代码。
其中的{}中的代码就是函数的主体部分,即计算机将要执行的内容。

主函数注意事项

每一个.c文件中都必须有一个主函数,并且有且只有一个主函数,当同一个文件中出现两个主函数时,此处 写两个主函数如下:
C语言学习(二)--C语言基础学习_第1张图片
就会编译出错,如下图所示:
在这里插入图片描述
提示在第二个主函数之前已经定义了一个主函数,所以编译出错,因此在每个.c文件中只能有一个主函数。

打印函数

打印函数printf是编程中最为常用的一个函数,因为如果不把结果打印出来的话,你咋知道自己写的对不对呢,打印函数的打印方式有很多种,对于不同的变量类型有着不同的打印方式,较为常见的比如整型、字符类型、单精度浮点型、双精度浮点型、字符串类型、指针类型等等,每个类型对应不同的打印命令,常用的总结如下表:

类型 c格式 打印类型
整型 int %d
字符类型 char %c
单精度浮点型 float %f
双精度浮点型 double %lf
字符串类型 char %s
指针类型 没明确 %p

上表中的很多类型可能你么有听过,也不知道什么意思,没有关系,也不要担心,在后续的学习中,用到时候就会进行逐一的详解,在此处仅以打印整型为例,

打印单变量

我们首先新建一个.c文件,名字的话你开心就好啦,保证后缀为.c即可,然后引入头文件,定义主函数,今日是5月21日,那我们就打印整数521,代码如下:

#include
int main()
{
    int a = 521;
    int b = 1314;
    printf("今天是 %d\n",a);
    return 0;
}

下面我们简单分析以下上述代码,头文件,函数入口等大家相比早已了解,根据上述的表格,可以看到我们定义了两个整型int变量,名为a、b,然后对其进行打印,注意:打印的内容同要用""引起,由于打印的类型为int,由表可知应该使用%d命令,其中的\n为换行操作,你问为啥是换行?甲鱼的臀部—规定!!!!为什么后面该跟着一个a呢,这个不是规定,这是为了告诉计算机我们要打印a,而不是b
你可能又问了,最后一句retunrn 0干嘛的?在主文件中我们定义的函数的起始执行入口,那么你总得有个出口吧,这个命令就是告诉电脑,程序到这就over了。
讲解完毕后,ctrl + s保存文件,F6编译代码可以看到打印内容如下图所示:
在这里插入图片描述
如果我们在打印函数中不说明具体的打印变量,会有什么结果呢,我们继续编译:
在这里插入图片描述
可以看到,由于并未指定打印谁,计算机就随便打印了,这不是瞎搞嘛,所以一定要声明具体的打印变量

打印多个变量

上述操作是打印单个变量,如果我想要打印多个变量呢,难道我要printf*n嘛,当然不是,只需要在打印函数中,说明具体的打印变量和打印类型即可进行多变量打印,将上述代码的打印函数改为:

 printf("今天是 %d\n 我要 %d\n",a,b);

保存编译运行,可以看到结果如下:
在这里插入图片描述同时将两个想要打印的内容,同时进行了打印,但是此处到注意位置对应,如果将ab的位置互换,那么打印的内容也会互换,结果如下:
在这里插入图片描述
这可不行,毕竟我们没有第13个月,所以打印时要小心,注意打印变量位置的对应

局部变量与全局变量

区分全局与局部

所谓局部变量,其作用域自然是局部的仅在局部有效(这么说其实是不对的,目前大家先这样理解),全局变量自然是在全局都可以进行使用,那么我们该如何区分自己定义的变量是全局变量 or 局部变量呢。
我们用该变量是否在{}内进行区分,在花括号内则为局部变量,在外则为全局变量,下面是示意代码:

#include
int main()

{
    int a = 521;
    {
    int b = 1314;   
    }
    printf("今天是 %d\n",a);
    printf("我要 %d\n",b);
    return 0;
}

此处定义的变量在{}内,它是一个局部变量,因此我们在外部进行打印时,将会无法打印,提示未被定义,如下图:
在这里插入图片描述
将打印函数放入{}内,即

#include
int main()
{
    int a = 521;
    {
    int b = 1314;  
    printf("我要 %d\n",b); 
    }
    printf("今天是 %d\n",a);

    return 0;
}

可以看到可以正常打印,结果如下:
在这里插入图片描述
从上述的不同代码的运行中,我们可以看到变量b只作用在了其所在的{}内,在{}外并未启作用,那么{}内的区域即为变量b的作用域,这也符合局部变量的特点,那么a的作用域是否就是全局呢,我们在b所在的{}内打印a,注释外部打印a的命令,即代码为:

#include
int main()
{
    int a = 521;
    {
    int b = 1314;  
    printf("我要 %d\n",b); 
    printf("今天是 %d\n",a);
    }
    // printf("今天是 %d\n",a);

    return 0;
}

保存编译结果如下:
在这里插入图片描述
可以看到可以正常打印,因此,a的作用域确实为整个文件,也即作用域为全局。

局部和全局优先级问题

既然有全局变量和局部变量,那么势必会造成一种冲突,如果我不小心,将两个 变量名命名为同一个a了,那么最后编译时识别的到底是全局变量定义的a,还是局部变量a呢?下面进行验证,示例代码如下:

#include
int a = 521;
int main()
{
    int a = 1314;  
    printf("今天是 %d\n",a);
    return 0;
}

保存并编译,结果如下:
在这里插入图片描述
可以看到结果是1314而不是521,这也就意味着局部变量的优先级高于全局变量(当变量重名时)
所以在写程序时,一定要避免变量重名,不然会很麻烦,他又不报错,你说怎么搞呢。

上述内容即使今天的全部内容了,水平尚浅,不足之处望大家海涵,如果方面,点个赞和关注呗,谢谢大家。
Ps:今天是5月21日,祝大家节日快乐!

你可能感兴趣的:(C语言学习,c语言,学习,c++)