目录

  • 数据类型
  • 常量、变量
  • 数组
  • 字符串、转义字符
  • 选择语句
  • 循环语句
  • 函数
  • 操作符
  • 结构体
  • 指针

一、数据类型

现实生活中,我们对信息的分类方式多种多样,目的都是为了更好的处理它们。而对于计算机而言,所有的信息最后都要转化为0和1来处理,只有对信息进行分类我们才能用最优的资源得到更好的结果。

介绍数据类型前,我们先了解计算机的存储单位。

C语言中数据类型分为:int 、short int 、long int 、long long int、float、 double 、char

1.整形int:一个int类型在内存占的空间是4个byte,即32个bit位,表示的值为整数,范围是–2^31 ~ 2^32–1。

2.短整型short int、长整型long int、long 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语言中就有了常量和变量。

二、常量、变量

生活中有的值是不变的,例如π值;而有的值是会变的,例如体重。所以,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则是正确的
> >= < <= 与实际生活中数学相对于

九、结构体

由上述我们知道,如intchar等基本的数据类型能表示一些事物的基本属性,但当我们想要表示事物的全部或部分属性时,单一基本数据类型就不能满足要求了。这时,C语言提供以一种自定义数据类型,结构体,英文关键字struct。

#include <stdio.h>

struct  student
{
float height;
int age;
int class;
};
int main()
{
struct student Lihua;
/*与int a;作用是类似的。定义变量Lihua,
数据类型为struct student.*/
//struct student为自定义数据类型
Lihua.height = 175.8;//李华身高赋值为175.8
Lihua.age = 18;//李华的年龄赋值为18
Lihua.class = 1;//李华的班级赋值为1
return 0;
}

十、指针

我们存放的数据计算机会把它们存放在内存里,计算机中每一个内存都有它自己的地址名字,就像门牌号一样。我们可以通过这个地址来找到我们存放的数据,所以地址就是所谓的指针。

一级指针:

#include <stdio.h>

int main()
{
int a=1;
int* b;
b = &a;
//介绍解引用操作
printf("%d\n",a);//打印变量a存放的值
printf("%d\n",*b);/*打印指针变量b所
指地址存放的值*/
//所以*b等价于a 此时*为解引用操作 return 0;
}

结语:

感谢各位小伙伴的阅读,希望能对初学的你建立一个C语言的大概认识。由于作者水平所限,难免存在一些不足或错误之处,希望大家能及时向我反馈,可评论区留言或私信我(在此不胜感激!)。

欢迎大家点赞收藏关注,我将持续不断地为大家输出干货。

一起交流学习呀。

搜索

复制

大一/初学者学C语言前必看!!!(建议收藏)的更多相关文章

  1. php代码审计入门前必看

    首先先介绍什么是代码审计? 代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术 包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉 2.为什么要进行代码审计, ...

  2. 60道Python面试题&答案精选!找工作前必看

    需要Word/ PDF版本的同学可以在实验楼微信公众号回复关键词"面试题"获取. 1. Python 的特点和优点是什么? 答案:略. 2. 什么是lambda函数?它有什么好处? ...

  3. 【UIBE】研究生考试前必看

      梦想就在前方,再跨一步就能到达.考研的同学们,请务必加油! 回想4年前的今天,坐在图书馆里的我,紧张于即将来临的考试,期待于每天憧憬的未来.大半年的复习生活,我学会了很多,学会了早起抢座位:学会了 ...

  4. 边看MHA源码边学Perl语言之一开篇

    边看MHA源码边学Perl语言之一开篇 自我简介 先简单介绍一下自己,到目前为此我已经做了7年左右的JAVA和3年左右php开发与管理,做java时主要开发物流行业的相关软件,对台湾快递,国际快递,国 ...

  5. 15个初学者必看的基础SQL查询语句

    本文由码农网 – 小峰原创翻译,转载请看清文末的转载要求,欢迎参与我们的付费投稿计划! 本文将分享15个初学者必看的基础SQL查询语句,都很基础,但是你不一定都会,所以好好看看吧. 1.创建表和数据插 ...

  6. mysql进阶(二十六)MySQL 索引类型(初学者必看)

    mysql进阶(二十六)MySQL 索引类型(初学者必看)   索引是快速搜索的关键.MySQL 索引的建立对于 MySQL 的高效运行是很重要的.下面介绍几种常见的 MySQL 索引类型.   在数 ...

  7. Python初学者必看(1)

    python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  8. 快看Sample代码,速学Swift语言(2)-基础介绍 快看Sample代码,速学Swift语言(1)-语法速览

    快看Sample代码,速学Swift语言(2)-基础介绍 Swift语言是一个新的编程语言,用于iOS, macOS, watchOS, 和 tvOS的开发,不过Swift很多部分内容,我们可以从C或 ...

  9. 使用Code First建模自引用关系笔记 asp.net core上使用redis探索(1) asp.net mvc控制器激活全分析 语言入门必学的基础知识你还记得么? 反射

    使用Code First建模自引用关系笔记   原文链接 一.Has方法: A.HasRequired(a => a.B); HasOptional:前者包含后者一个实例或者为null HasR ...

随机推荐

  1. Git常见错误整理

    参考文章 git 排错 fatal: 'git status --porcelain' failed in submodule abi/cpp 1 fatal: 'git status --porce ...

  2. window10使用putty传输文件到Linux服务器

    由于Linux和Linux可以使用scp进行传输文件,而window系统无法向Linux传输文件,当然,有xshell等等类似的工具可以进行操作:putty工具就可以实现,毕竟zip压缩包也不大,启动 ...

  3. 分布式存储---FastDFS+GlusterFS

    一. 存储概念 1.块存储的多种实现: 块存储: 就好比硬盘一样, 直接挂在到主机,一般用于主机的直接存储空间和数据库应用的存储 1.磁盘+LVS: 单机硬盘纯存储 2.DAS(DELL MD系列): ...

  4. WSGI是个啥?大白话告诉你wsgi做了什么!

    定义: 官方定义:wsgi是Web服务器网关接口(Python Web Server Gateway Interface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之 ...

  5. windows 添加路由表

    route print   查看路由表 route  add      192.168.4.0  mask 255.255.255.0        192.168.18.111   添加路由 rou ...

  6. 树莓派安装ros

    之前电脑安装过ros感觉还好,没成想这次在树莓派上安装费老劲了,出现了很多错误,装了卸,卸了装废了半天劲下面将一些安装的错误和问题做个总结方便以后的安装也希望给别人一个参考 ros安装(对照自己的版本 ...

  7. Linux编程 | 使用 make

    目录 简单的 makefile 文件 常规的 makefile 文件 常用参数 make 内置规则 后缀和模式规则 make 管理函数库 在Linux 环境中,make 是一个非常重要的编译命令.不管 ...

  8. c++中的赋值函数

    在c++中,对于任意一个类Class A,如果程序员不显示的声明和定义上述函数,C++编译器将会自动的为A产生4个public inline 的默认函数,这4个函数最常见的形式为: A() //默认构 ...

  9. SCSS学习笔记(一)

    SCSS的由来 SCSS就是加强版的CSS,要讲SCSS那就一定要从SASS讲起 SASS Sass(英文全称:Syntactically Awesome Stylesheets)是一个最初由Hamp ...

  10. 在Nginx或Tengine服务器上安装证书

    阿里云SSL证书服务支持下载证书并安装到Nginx.Tengine服务器上,本文介绍了证书安装的具体操作. 前提条件 已准备远程登录工具,例如PuTTY或者Xshell. 背景信息 本文档以CentO ...