京东-优惠雷达
新人页面
精选商品
首月0月租体验,领12个月京东PLUS
自营热卖

初识C语言---大一/初学者学C语言前必看!!!

四十五度的想念 4月前   阅读数 70 0

在这里插入图片描述
前言:
Hello,大家好!俗话说,知己知彼,百战不殆。我们学习C语言也是一样,得先从全局的层面去了解它,知道它包含哪些东西,然后才是去深入的学习。本篇为初学C语言的朋友全面梳理和介绍C语言,不至于正式学的时候云里雾里。

数据类型

现实生活中,我们对信息的分类方式多种多样,目的都是为了更好的处理它们。而对于计算机而言,所有的信息最后都要转化为0和1来处理,只有对信息进行分类我们才能用最优的资源得到更好的结果。
介绍数据类型前,我们先了解计算机的存储单位。
在这里插入图片描述 C语言中数据类型分为:intshort intlong intlong long intfloatdoublechar

  1. 整形int:一个int类型在内存占的空间是4个byte,即32个bit位,表示的值为整数,范围是–2^31 ~ 2^32–1。
  2. 短整型short int、长整型long intlong long int:它们表示的也是整数,不过short int占2个byte、long int占4个byte、long long int占8个byte。由于所占空间不同,它们能表示的值的范围也就不同,比如:short int最大能表示的值即16个bit全是1,为65535。
  3. 单精度浮点型float:一个float类型占4个byte,表示的值为小数,精度最高可到小数点6位。
  4. 双精度浮点型double:该类型占8个byte,与float一样用来表示小数,但能表示的值范围更大、精度更高。
  5. 字符类型char:所占内存为1个byte,用来存放字符。实质上存放的是整数,计算机是根据ascll表把字符转化为数字存的。

常量、变量

生活中有的值是不变的,例如π值;而有的值是会变的,例如体重。所以,C语言中就有了常量和变量。

  • 变量:
    局部变量
#include <stdio.h>

int main()//程序的入口,只能有一个。
{
     
   int a=0;
   /*在内存中分配4个byte(1个int类 型)用来存放整型,这块内存名为a, 暂时赋为0.*/
   a=520;//a这块内存的值就变为了520
   {
     
      int b;//同理
   }
   b=1;
   /*此时错误,因为变量b的作用 范围只在它最近配对的{} 而a的作用范围在main函数的{}内*/
   return 0;
}

全局变量

#include <stdio.h>

int a=0;
//此时a为全局变量,可作用与整个工程
int main()
{
     
   int a=520;//这个a为局部变量
   pritnf("%d\n",a);
   /*在屏幕上打印a的值,猜猜为多少呢? 答案是:520.why? 全局变量a和局部变量a是两个不同的 内存空间,但是都叫a遇到这种情况, 那么我们遵循局部优先原则!*/
   return 0;
}
  • 常量:
    常量,即不可改变的量。主要有四种:字面常量、const修饰的常变量、#define定义标识符常量、枚举常量(暂时不讲)。
#include <stdio.h>
#define π 3.1415
/*定义一个常量名字叫π,值为3.1415 int main() { 3.14; /*这就是一个字面常量,但执行这条 语句并没有意义。*/
    float a=3.14;//变量a的值存字面常量3.14
    a=π;//此时把常量π的值赋值给a
    const int b=1;
    b=2;//此时发生错误
    /*const修饰变量b后,使得变量b 的内容不能被修改*/
   return 0;
}

数组

局部变量相当于存放一个东西,那么若我们有多个同类型的东西要存放,岂不得都定义呀!所以有了数组,数组即一组相同类型的数据。

#include <stdio.h>

int main()
{
     
    int arr[10]={
     0}/*定义一个arr,能够存放10个int 类型的变量,所以它占10×8个byte*/
    arr[0]=1;//把第一个变量赋值为1
    /*数组元素的下标从0开始 定义时[]中表示几个,访问时[]中 表示第几个*/
    arr[1]=2;
    ...
    return 0;
}

在这里插入图片描述

字符串、转义字符

  • 字符串
    我们用char类型(占1×8个bit位)来存放字符,例如字符’a’的ascll码值是为97,二进制:0110 0001。那么当我们想存储很多字符信息时怎么办呢?用字符串!字符用’ '引,而字符串用" "引。
#include <stdio.h>

int main()
{
     
    char arr[5]="abcd" ;
   /*定义char类型的数组,分配内存 为1×8×5个bit,存放字符*/
    pintf("%d\n",strlen(arr));
    //strlen作用是求字符串arr的长度
    //显示答案为4
}

注意:计算机会在字符串末尾自动添加字符’\0’作为结束标志,该’\0’占用1个byte内存,但不算在字符串长度内。计算机遇到’\0’时就截断为字符串,否则会顺着相邻内存存放的乱码找下去,直到找到’\0’。

  • 转义字符
    如果你仔细观察,你会发现很多问题。printf打印时出现的\n是什么,n不就是’n’字符吗?这就涉及到转义字符了。转义字符:即转变字符的含义,使它具有某种新的作用。具体有:
转义字符 释义
\n 换行(由’n’变为起换行作用)
\’ 用于表示字符常量’(例如你想打印字符’,即’ ’ ‘。计算机识别到’ ‘就把它们配对了,所以应转义’ \’ ')
\" 用于表示字符串内部的双引号
\\ 用于表示1个\,防止它被转义为序列符
\a 警告字符,把a转义起到蜂鸣一声的作用
\b 退格符
\r 回车符
\ddd ddd表示1~3个八进制的数字,作用是把八进制ddd转义为十进制。例如:\130=88、 \12=10
\xdd dd表示2个十六进制数字,作用同理。例如:\x12=18

选择语句

有时候选择比努力更重要,那么,C语言中怎么实现选择呢?常用有if…else语句和switch语句。

  • if…else 语句:
#incldue <stdio.h>

int main()
{
     
   int i=2
   if(i<3)//(在这里面输入条件)
   {
     
     printf("%d\n",i);
     //打印i的值
   }
   /*如果条件成立,则执行{}内的语句*/
   else 
   {
     
   pritnf("i>=3");
   }
   /*否则执行else下{}内的语句*/
   /*注意:可单独使用if,但else需与相 邻if配对使用*/
   
   return 0;
}
  • switch语句:
#include <stdio.h>

int main()
{
     
   int num=1;
   switch(num)//选择第num中情况
   {
     
      case 1:
      {
     
        //此处为情况1执行的语句
        break;
        //执行遇到break则跳出switch选择语句
      }
      case 2:
      ...
      default:
      {
     
      }
      /*若输入的num不在选择的情况 中,则执行default的{}*/
   }
   return 0;
}

循环语句

我们总是很反感要多次重复地做同一件事,那就交给C语言的循环语句吧!循环语句有:while语句、for语句和do…while语句。在这里插入图片描述

#include <stdio.h>

int main()
{
     
   int arr[10]=0;
   int i=0;
   while(i<10)//判断条件,成立则执行{}内语句
   {
     
     arr[i]=i+1;
     /*把第i个数组元素赋值为i+1*/
     i=i+1;
   }
   return 0;
}

在这里插入图片描述

#include <stdio.h>

int main()
{
     
   //与while语句相似
   int sum=0;
   int i=1;
   do
   {
     
   sum=sum+i;//把sum和i的值相加再赋值给sum
   i=i+1;
   }while(i<=10);
   /*先执行do{},然后判断条件是否处理, 一直循环直到条件不成立*/
   //该循环sum=1+2+...+10=55
   return 0;
}

在这里插入图片描述

#inlcude <stdio.h>

int main()
{
     
   int i=0;
   int sum=0;
   for(i=1;i<=10;i=i+1)
   {
     
     sum=sum+i;
   }
   /*结果与do...while一样*/
   /*for括号内有三个分号: (初始化循环变量的值 ; 判断条件是否成立 ; 执行完一遍后变量进行的处理 )*/
   return 0;
}

函数

如果你要求三角形的面积,你会把三角形相关的数代到:S=1/2×底边×高。那么,类似于公式这种有着单一功能的工具我们就可以用C语言中的函数实现。
在这里插入图片描述

#include <stdio.h>

int SUM(int x, int y);
//声明一个求和函数SUM
int main()
{
     
   int a=1;
   int b=2;
   int sum=SUM(a,b);
   //调用SUM函数求a与b的和
}
//SUM函数的实现:
int SUM(int x,int y)
{
     
   int sum;
   //sum的类型要与函数返回类型一致
   sum=x+y;
   //把a和b的值分别赋给x和y,求和后赋值给sum
   return sum;
   //该函数返回值sum
}

操作符

数学里运用各种符号来处理处理数字,比如说我们常见的± * /、Σ等。C语言中也有很多操作符用来供我们使用,由于操作符内容多且杂,本篇只介绍一些简单常用的操作符。

操作符 用法
+ - * 与实际生活中数学相对应 eg: 表达式 1+2的值为3
/ / 较特殊,当左右两个值的int类型是,结果为整型;若其中有一个为float/double类型时为小数。eg:3/1为3、3/2为1(1. …)、2/1.0为2.000000
% 取两个整数相除的余数 eg:5%2为1
= 赋值操作符 把右边的值赋值给左边,所以左边要为可修改的变量
== 相当于实际中的= 例如2= =3这个表达是错误的 2= =2则是正确的
> >= < <= 与实际生活中数学相对于

指针

结构体

持续更新中…


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: