c语言(从入门到放弃?NONONO,LET我们一步一步刨析,会发现其中蕴含的乐趣)

c语言(从入门到放弃?NONONO,LET我们一步一步刨析,会发现其中蕴含的乐趣)_第1张图片

         大家刚入门的时候通常会觉得c语言怎么怎么难学,听别人说指针多么多么难懂,深入学习的人的头发如何如何的稀少,然而我们只需要一步一步了解,一步一步刨析,会发现学习c语言也是具有许多乐趣的。

        接下来我们正式展开对C语言的简单了解咯

目录

        一  ,让我们看第一个C语言代码

        二  ,数据类型

一,字符型变量

        二,整型常量

        三,浮点型变量

静态存储和动态存储的区别

static变量

register变量

extern变量


        一  ,让我们看第一个C语言代码

#include 
int main()
{
	printf("hello world\n");
	printf("hello,c语言\n");

	return 0;
}

        切记main函数为程序的入口,一个工程中main函数只能有一个,从main函数进入后,完成内部操作,直到最后返回零,结束该程序的运行。

        二  ,数据类型

        c语言(从入门到放弃?NONONO,LET我们一步一步刨析,会发现其中蕴含的乐趣)_第2张图片

         1,基本类型

        基本类型就是c语言中的基础类型,包括整型,字符型,浮点型,枚举类型,今天我们就谈谈c语言的基本类型其详细介绍及如何应用。

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

为什么会出现这么多类型呢?每种类型的大小(单位是字节)是多少呢?

我们可以通过sizeof函数来探寻

#include 
int main()
{
    printf("%d\n", sizeof(char));    //1
    printf("%d\n", sizeof(short));    //2
    printf("%d\n", sizeof(int));    //4
    printf("%d\n", sizeof(long));    //4
    printf("%d\n", sizeof(long long));    //8
    printf("%d\n", sizeof(float));    //4
    printf("%d\n", sizeof(double));    //8
    return 0;
}

每种不同类型的类型占用不同的字节,有了这么多变量,我们可以更加生动地表示生活中的各种数值。

2.定义变量的方法

        变量类型加变量名!

例如

        Int age = 150;

        float weight = 45.5f;这里f可以不加,只是表示weight s是float 类型的变量

        char ch = 'w';

3.变量的命名

        ①只能由字母(包括大写和小写),数字和下划线(_)组成

        ②不能以数字开头

        ③长度不能超过63个字符

        ④变量名中区分大小写

        ⑤变量名不能使用关键字



一,字符型变量

        字符型变量是用来存储字符常量的变量,将一个字符常量储存在字符变量中,其实是将该字符的ASCLL码值储存到内存单元中。

        字符类型在内存空间中占用一个字节,取值范围是-128~127.

        说明

        字符数据在内存中存储的是字符的ASCLL码值,是一个无符号整数,其形式与整型的储存形式一样,因此C语言允许字符型数据与整形数据之间通用。

        ✅举一个例子

#include 
int main()
{
	char Char1;
	char Char2;
	Char1 = 'a';
	Char2 = 97;
	printf("%c\n", Char1);	//输出结果为a
	printf("%c\n", Char2);	//输出结果为a

	return 0;
}

        定义两个字符类型变量,为两个变量赋值时,一个赋值为 'a',一个赋值为97,在用%c(%c打印字符常量)打印时,输出结果都为'a'。说明字符型数据和整型数据之间是通用的。

        二,整型常量

        因为上边char类型储存的也是整型数据,所以偶尔也可把char类型看作整形,如同他的名字,整型变量是用来存储整型数值的变量,其基本类型是Int,在此基础上加上一些符号进行修饰,例如short或long等。

        1,有符号基本整型

        有符号基本整型是指signed int 型,编写时通常将signed省略,有符号整型在内存中占4个字节,取值范围是-2147483648~2147483647.

注意:在编写程序时,所有用到的变量的定义应该在变量的赋值之前,否则就会产生错误

        2,无符号基本整形

        关键字是unsigned int,即无符号的意思,在内存中也是占4个字节,取值范围是0~4294967295.

        3,有符号短整型

         有符号短整型的关键字是signed short int,在编写时signed和int都可以省略,直接写为short,他在内存中所占的字节是两个字节,取值范围是-32768~32767.

        4,无符号短整型

        无符号短整型的关键字是unsigned short int,在编写时int可以省略,写为unsigned short,他在内存中所占的字节是两个字节,取值范围是0~65535.

        5,有符号长整型

        有符号短整型的关键字是signed long int,在编写时signed和int都可以省略,直接写为long,他在内存中所占的字节是4个字节,取值范围是-2147483648~2147483647.

        6,无符号长整型

        无符号长整型的关键字是unsigned long int,其中关键字int可以省略,无符号长整型在内存中占4个字节,取值范围是0~4294967295.

        三,浮点型变量

浮点型变量也称为实型变量,浮点型变量是由整数和小数两部分组成的,根据其精度分为单精度类型,双精度类型和长双精度类型。

        1,单精度类型

        单精度类型的关键字是float,他在内存中占4个字节,取值范围是-3.4*10^-38~3.4*10^38.

这里举一个例子,定义一个单精度类型变量,为其赋值为2.34

int main()
{
	float x = 0;
	x = 2.34;
	printf("%f\n", x);
	return 0;
}//输出结果为2.340000

        这里输出结果为2.340000,我们如何只保留两位小数呢,只需要在 f 前加上 .2即可,即printf("%.2f\n",x);  即可,更改代码后发现输出结果确实为2.34 。

        2,双精度浮点型

        双精度浮点型的关键字是double,他在内存中占8个字节,取值范围是-1.7*10^108~1.7*10^38.

        3,长双精度浮点型

        长双精度浮点型的关键字是 long double,他在内存中也占8个字节,取值范围与double一样,区别在于

        1 double类型为C++原始类型,所有 编译器 均支持,而long double是C99规范增加的新类型,只有支持C99的编译器才支持long double;

        2 占用大小不同,double占8个字节,long double根据编译器实现不同,有占用8,10,12字节和16字节四种; 在long double用8字节实现时,long double 和double没有其它区别。


        接下来又是一大模块,来讲一讲所谓变量的储存类别

         问题引入:在程序运行中我们经常使用到变量,在程序中可以选择不同储存形式,分为静态存储和动态存储,可通过储存类型修饰符告诉编译器需要储存什么样的类型变量,具体有auto(自动(通常省略)),静态(static),寄存器(register)和外部(extern)。


静态存储和动态存储的区别

        ✅根据变量的产生 时间 区分,静态存储是指程序运行时为其分配固定的存储空间,动态存储则是该程序运行期间根据需要动态的分配空间。

void ADD()
{
	int j = 0;
	printf("%d", j);
	j = j+1;
}
int main()
{
	int i = 0;
	for (i = 0; i < 9; i++)
	{
		ADD();

	}

	return 0;
}

思路    :我们想打印从0开始,打印一次加1,然而运行代码发现输出结果是九个0;为什么会发生这种情况呢。

运行结果分析:     j 是一个auto的变量,在程序运行到ADD函数时,创建一个变量 j 为0,打印0之后加1变成1,然而出了ADD函数,这个变量 j 就销毁了,再次进入后,重新生成一个 j ,其值仍然为零,所以打印的仍然是零。这就是动态变量。

static变量

        static变量,static变量在修饰不同类型变量以及修饰函数等有不同的作用,这里我们就讲一讲static修饰局部变量会发生什么。

        static变量和auto变量是相对而言的,尽管两者作用域都仅限于声明变量的函数中,但在执行期间,stasic变量将保持它的值,且初始化只在第一次具有作用,多说无益,直接上代码,看一看static和auto如何是相对的

代码演示:

void ADD()
{
	static int j = 0;
	printf("%d", j);
	j = j+1;
}
int main()
{
	int i = 0;
	for (i = 0; i < 9; i++)
	{
		ADD();

	}

	return 0;
}

        运行结果:这里与上面代码不同的就是在ADD函数中将 j 的变量前加了一个static。此时运行的结果就变为0 1 2 3 4 5 6 7 8.

        分析:这次出ADD函数后,变量 J 没有销毁,所以才会保持上一次运行后的值,然后依次加上一。

register变量

        ⭐register变量称为寄存器储存类型,通过register变量,程序员可以将某个        局部变量指定存放在寄存器中,而不是储存在内存中,这样可以提高程序的运行速度。然而这只是程序员的主观意愿,实际上编辑器可以忽略register对变量的修饰,

extern变量

        ⭐extern变量称为外部储存变量,extern声明了将要使用但并没有定义的外部变量。

通俗来讲,一个工程通常是由多文件组成的,这些源代码文件会分别编译,然后链接成一个可执行代码模块。

这样说着可能不太清晰,我们.......

代码演示:

c语言(从入门到放弃?NONONO,LET我们一步一步刨析,会发现其中蕴含的乐趣)_第3张图片

 说到这里,本篇文章就结束啦,欢迎大家讨论留言哦!

支持作者的友友可以一键三连哦!

❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️❤️

你可能感兴趣的:(c语言知识详解,c语言,开发语言,c++)