c语言入门篇

简介: c语言入门篇



 

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

#include <stdio.h>
int main()
{
  printf("hello world\n");
  printf("hello,c语言\n");
  return 0;
}

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

       💭二  ,数据类型

       

        📖1,基本类型

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

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

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

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

#include <stdio.h>
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 <stdio.h>
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声明了将要使用但并没有定义的外部变量。

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

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

💬 代码演示:

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

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

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

 


目录
相关文章
|
6天前
|
C语言
王桂林C语言从放弃到入门课程
课程目标16天,每天6节课,每节40分钟课堂实录,带你征服C语言,让所有学过和没有学过C语言的人,或是正准备学习C语言的人,找到学习C语言的不二法门。适用人群所有学过和没有学过C语言的人,或是正准备学习C语言的人!
33 2
王桂林C语言从放弃到入门课程
|
6天前
|
存储 编译器 C语言
初识C语言——详细入门(系统性学习day4)
初识C语言——详细入门(系统性学习day4)
|
6天前
|
存储 自然语言处理 编译器
C语言从入门到实战——编译和链接
在C语言中,编译和链接是将源代码转换为可执行文件的两个主要步骤。 编译过程包括以下步骤: 1. 预处理:将源代码中的预处理指令(如`#include`和`#define`)替换为实际的代码。 2. 编译:将预处理后的代码转换为汇编语言。 3. 汇编:将汇编语言转换为机器码指令。 链接过程包括以下步骤: 1. 目标文件生成:将每个源文件编译后生成的目标文件(`.o`或`.obj`)进行合并,生成一个总的目标文件。 2. 符号解析:查找并解析目标文件中的所有符号(例如全局变量和函数名),以确保每个符号都有一个唯一的地址。 3. 地址重定位:根据符号表中符号的地址信息,将目标文件中的所有地址引用
43 0
|
6天前
|
编译器 程序员 C语言
C语言从入门到实战——动态内存管理
在C语言中,动态内存管理是指程序运行时,通过调用特定的函数动态地分配和释放内存空间。动态内存管理允许程序在运行时根据实际需要来分配内存,避免了静态内存分配在编译时就确定固定大小的限制。
47 0
|
6天前
|
编译器 Linux PHP
C语言从入门到实战——预处理详解
C语言预处理是C语言编译过程的一个阶段,它在编译之前对源代码进行一系列的处理操作,包括宏替换、文件包含、条件编译等,最终生成经过预处理的代码,然后再进行编译。
48 0
|
6天前
|
存储 缓存 C语言
C语言从入门到实战——文件操作
C语言中的文件操作是通过使用文件指针来实现的。可以使用标准库中的函数来打开、读取、写入和关闭文件。
58 0
|
6天前
|
存储 自然语言处理 编译器
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
振南技术干货集:振南当年入门C语言和单片机的那些事儿(3)
|
4天前
|
C语言
C语言——入门分支与循环
C语言——入门分支与循环
4 0
|
6天前
|
编译器 C语言
函数深入解析(C语言基础入门)
函数深入解析(C语言基础入门)
|
6天前
|
C语言
数组深入剖析(C语言基础入门)
数组深入剖析(C语言基础入门)