c语言修炼第一章--初识c语言(1.1)

前言:

    修炼第一章初识c语言,在这一章我们会粗略的介绍我们将在c语言学习的知识点!但是呢有同学可能会说我们难道要一次学完吗?不不不,在这一章我们会介绍一些简单的然后更多的部分是等后面详细来介绍。废话不多说,让我们开始今天的学习吧。

第一个程序

第一个程序的步骤先要创建项目,创建源文件,写代码,编译和运行代码。那么我们该怎么创建项目呢?工欲善其事必先利其器,我们得先下载一个vs2019.vs2019是Vs系列,是一个集成开发环境。那么我们再安装过后该怎么创建项目呢

 在打开Vs2019之后将会出现这个界面,此时我们该点击创建新项目,此时又会出现一个新界面

 这时我们点击空项目即可!然后再点击下一步

 下一步点击过后我们会在来到一个新的界面,此时我们可以修改这个项目的名称并在点击创建。此时我们的新项目就创建完成啦,然后我们就会得到这样一个界面

 看到里面的资源管理器说明项目创建成功,我们再继续创建源文件吧!只需要选中资源管理器里面的源文件,右击选择添加再选择新建项。

 还有最后一步我们就创建完毕源文件啦,那么最后一步是什么呢?没错就是修改源文件的名称。

 在这个页面中我们选择c++文件,并且在名称改为.c为后缀的名称。要是不改的话,会默认为c++的语法格式。这一步完成之后我们就可以开始写代码啦!输出一个hehe吧

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main( )
{
   printf("hehe\n");
   return 0;
}

让我们来一步步解释吧!main函数是代码的入口,代码从main函数下的第一行开始!大括号是代码块,return是一个返回,至于为什么要返回0呢是因为main函数是int类型,二者形成前后呼应!由于main是一个函数所以会带有一个括号,至于括号里的参数一般不写但也有一些教材上写为void,这种写法也是可以的·,至于void main这种形式太过于古老不值得推荐

#include<stdio.h>
int main(void)
{
   printf("hehe\n");
   return 0;
}//这种形式也可以哦!void的意思是代表空类型

void main( )
{
   printf("haha\n");
}//这种写法则为更加古老,不值得学习

还剩下Printf函数,printf是一个库函数是由c语言本身提供的一个函数,在使用时要引用头文件stdio.h不然会报错!

此外在写代码时还有一些值得注意的点:1,main函数在整个工程中有且只有一个。当我们在程序中写多个main函数时在运行时代码会进行报错提示mian函数已有主体。此时我们把多出来的mian函数注释掉,代码就可以正常运行啦

 运行和编译代码直接选择ctrl+f5,不过在某些电脑上要按ctrl+fn+f5也可以运行!调试代码按f10或者fn+f10(更多调试的方法将会在后面的学习中介绍)

以上就是我们写的第一个程序!更多详细介绍将会在后期学习中,慢慢学吧!

数据类型

1.数据类型介绍

数据都有哪些类型呢?让我们一起来看看吧。

数据类型
int  整型类型 long 长整型
short  短整型 long long  更长的整型
double  双精度浮点型 float  单精度浮点型
char  字符型

为什么要有这么多种类型呢?在解答这个问题之前我们先来了解一下计算机中的单位:bit(比特)byte(字节),KB ,MB,GB,TB,PB。一比特等于8字节,1byte=8bit,1KB=1024byte,1MB=1024KB等等,其中数据类型的大小是以字节为单位。有这么多种类型是因为每个事物的大下不一样为其·找到合适的单位大小避免造成空间浪费!

2.数据类型的大小

那么·这些数据类型的大小是多少呢?在这里我们需要使用一个工具:sizeof。sizeof是一个关键字用来计算类型长度即所占空间大小,单位也是字节。我们一起来写代码计算其大小吧

#include<stdio.h>
int main()
{
	printf("%d\n", sizeof(int));
	printf("%d\n", sizeof(long));
	printf("%d\n", sizeof(long long));
	printf("%d\n", sizeof(short));
	printf("%d\n", sizeof(double));
	printf("%d\n", sizeof(float));
	printf("%d\n", sizeof(char));
	return 0;
}

 通过运行代码我们可以知道,Int,long,long long , short, double ,float, char的大小分别为:4,4,8,2,8,4,1。在这里我们可能会有一个疑问就是long不是长整型吗?为什么它的大小和int的大小一样?这是因为在c语言中规定sizeof(long)>=sizeof(int)。这里提一下%d的意思是以十进制的形式进行整数打印

3.数据类型的使用

我们已经了解了数据类型以及它们的大小,现在该怎么进行使用呢?怎么来利用一个数据类型来创建变量呢?上代码

#include<stdio.h>
int main()
{
    char ch = 0;
    //这个的意思是创建了一个字符类型的变量,变量名为ch,初始化为0;
    char ch1;
    //创建了一个字符变量,变量名为ch1,没有初始化
    int a = 0;
    //创建了一个整型变量,变量名是a,初始化为0;
    return 0;
}

数据类型的使用变量的创建,本质是在内存中申请一块空间,并将其命名为变量名!

变量,常量

1.变量常量的含义及使用

在c语言中把不可以变化的量称之为常量,例如:血型,身份证号,性别等。把可以变化的量称之为变量。变量常量怎么写呢?很简单,有两种方式。第一种:类型+变量名。第二种:类型+变量名+初始值。上代码,我们一起来瞧瞧吧!在这里要注意=和==的用法,num=20的意思是把20赋值给num,而num==20的意思是Num的值为20。在进行给变量赋值时使用的一定是=而不是==

int main()
{
   int a ;
   int b = 10;
   return 0;
}

这种就是变量的使用是不是很简单呐

2.变量命名的规则

  • 不能使用关键字
  • 命名要有意义
  • 不能以数字开头
  • 要区分大小写
  • 长度不能超过63个字符
  • 只能由字母(大小写)和数字,下划线组成

3.变量的分类:全局变量,局部变量

一句话教你分辨哪个是全局变量哪个是局部变量!在大括号里面的是局部变量在大括号外面的是全局变量。

#include<stdio.h>
int b = 10;
int main()
{
    {
       int a = 0;
    }
    printf("%d\n",a);
    printf("%d\n",b);
    return 0;
}

在这个代码中,a在大括号里,所以a是一个局部变量。b是一个全局变量。所以第一个printf无法打印a的值但是可以打印b的值。因为局部变量只进生命域创建出生命域销毁,它的作用域在其生命域中。而全局变量的生命域是整个工程,它的作用域也是整个工程,所以可以直接打印。全局变量也可以跨文件使用,上代码

 

 不是说全局变量可以跨文件使用吗?为什么这里还会报错呢?这是因为在使用跨文件的去安居变量时要用一个外部声明符extern。在后面的学习中我们会详细来说extern的使用,现在大家记住使用跨文件的变量时要进行声明,此时就可以正常使用啦

注意:局部变量的名称尽量不要和全局变量的名称相同。要是局部变量和全局变量的名称发生冲突,局部变量优先!!! 

 4.作用域和生命周期

作用域:是程序设计概念。一般来说,一段代码中所用到的名字并不总是有效/有用的而限定这个名字的可用性的代码范围就是这个名字的作用域

局部变量的作用域是变量所在的局部范围;

全局变量的作用域是整个工程。

生命周期:变量的生命周期指的是变量的创建到变量销毁之间的一个时间段。

局部变量的生命周期是:进入生命周期开始,出作用域生命周期结束。

全局变量的生命周期:整个程序的生命周期。

 5.常量

分类:

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量

字面常量,就比如是3.14,5啊这种常量

const修饰的常变量:常量具有了常属性不可以被修改,但本质上还是一个变量

int main()
{
	int a = 10;
	a = 30;
	printf("%d ", a);
	return 0;
}

此时a的值被改为30..当我们在a的前面加上const结果又会如何呢?一起来看看吧!

在int a的前面加上const之后再对a进行赋值改变,程序会报错并且显示左值是不可修改的·。还是那句话,当变量有const修饰时具有了常属性不能再被修改 

#define定义的标识符常量

这种很简单,语法形式是:#define  变量名 常数值

#define pi 10
int main()
{
	int arr[pi] = { 0 };
	return 0;
}

这里的Pi不再是一个变量而是一个常量

枚举常量:enum,枚举枚举也就是一一列举,其语法格式为:

#include<stdio.h>
enum 变量名
{
       
    //方块里列举可能出现的可能性
};//最后的分号一定要加
#include<stdio.h>
enum sex
{
    MALE,
    FEMALE,
    SECRET
};
int main()
{
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    return 0;
}

这个结果是0,1,2。默认是从0开始,然后依次加1.。要是想改变初始值可以在MALE部分给她赋初值,从而达到改变的效果。

转义字符和注释

转义字符:改变字符原来的意思

//在这里我们想打印出c:\test\test.c的效果
int main()
{
	printf("c:\test\test.c");
	return 0;
}

但是运行的结果却和我们想象中的不一样

  •  在c:和est之间有一个大空格,est和est之间也有一个大空格。这是为什么呢?这里我们将要了解到转义字符。
  • \?  让?不被解析成为三字母中的问号
  • \'    可以打印英文逗号
  • \"    可以打印英文的双引号
  • \\     让其转义成不是转义字符
  • \a    警告字符,可以发出蜂鸣效果
  • \b    退格符 往后退一格
  • \n    换行
  • \r     回车
  • \t     水平制表符相当于一个tab
  • \ddd  ddd是1到3个八进制数字
  • \xdd   dd是1到两个十六进制数字

好的,现在再回到上面那个问题之所以会有空格产生是因为\t,所以我们要在\t之前加一个\,使其不能成为转义字符

 此时达到了我们想要的效果!!!

再补充说明一下,二进制八进制十六进制十进制都是数据的不同表现形式,并且进制的每一位都有相应的权重。

  • 二进制是0和1
  • 八进制是0到7
  • 十进制是0到9
  • 十六进制是0到9  A到F

以15为例,二进制是1111,八进制是17,十进制是15,十六进制是F。那又有一个问题,计算机能够识别二进制,字符在计算机中是怎么存储的呢?字符不方便存储,因此利用ASCII码表对其进行编号然后在转化为二进制进行存储!例如A的ASCII码表值为65,a的ASCII码表值为97。有兴趣的小伙伴可以去看看ASCC码表噢

注释

  • 代码中有些不需要的代码可以直接删除,也可以注释掉
  • 代码中有些难懂的代码,可以加一下注释文字
int main()
{
	int a = 10;
	int b = 20;
	int sum = a + b;
	printf("%d ", sum);//这个代码的意思是把a和b的加起来的和放在sum中
	return 0;
}

其中c语言和c++也有各自的代码风格

int main( )
{
   int a = 10;
   //int b = 56;
   //int c = 30;这种是c++的代码风格
   /*if(a>b)
      printf("%d ",a); 这种是c语言的代码风格*/
    return 0;
}

C语言的代码风格的缺陷是无法进行嵌套!!!别的都挺好!


今天的内容就到此为止啦,以上就是今天学习的全部内容啦。么么哒

猜你喜欢

转载自blog.csdn.net/2301_77886098/article/details/131195073