【C语言】C语言基础重点01——C语言概述及数据表示

文章介绍了C语言的核心特性,包括其灵活性和对硬件的直接操作能力。学习C语言涉及理解数据表示,如数据类型和指针的使用,以及如何通过地址和指针找到和操作数据。文章还提到了C语言的数据管理,编译流程,以及赋值和数据类型的大小与解码。
摘要由CSDN通过智能技术生成

 
 

原文链接

 

C语言概述及数据表示

一、如何学好C语言

1. TIOBE

指令能力:解析处理顺序、分支、循环程序的能力

CPU:进行指令的解析与执行,即处理数据

  • 解析指令能力很强
  • 存储指令与数据的能力很弱

GPU:存储大,计算强,用于机器学习这种不复杂但量大的计算

  • 指令能力不强(处理分支、循环(这种逻辑)程序的能力不强)
  • 存储能力强,数量多

编程围绕着:找数据,表示数据,操作数据(找读改写)等行为。

C语言非常灵活,被发明出来就是为了帮助人们直接操控硬件、处理数据的。

  • 找:C语言提供了变量名(相当于给地址起了个外号,可以理解为:在编译时就吧变量名替换成了地址了)和指针(地址、无名的内存)两种方式找数据。
2. C语言学习路线

标黑为数据结构所需要掌握的。

  • C语言表示数据:主要表示数据的容量,例如int、char、有无符号数等
  • C语言操作数据:算术运算、位运算、分支、循环
  • C语言找到数据:地址 指针
int *p;          // 开辟一块名为p的空间,它回答了用多大空间存储地址,怎么用这个地址访问空间
int *p[5];       // 开辟连续的5个空间,使用p访问第一个空间。每个空间都存着“钥匙”(而不是数据),用于指向其他的空间。
int (*p)[5];     // 不加括号的话,p[5]的优先级高于*。为了让地址是5个([]里的数字)5个地访问,要把*p用()括起来,让它们成为一个整体。
int *p(int);     //
int (*p)(int);   // 
char **p;        // p往右边看没东西,看左边,第一个*告诉它这是“一把钥匙”,第二个*告诉它这把钥匙要开的门里面装的还是“一把钥匙”。
  • C语言数据管理:分段
    栈->堆->bss段->data段->rodata段->text段
  • C语言的模块化设计思想:函数——承上启下 模块衔接
  • C语言编译流程

二、C语言的数据表示

赋值=:逐位拷贝

int p1;  //用一个基础数据类型,叫int,在内存中圈了一块区域,用p1来标记这个区域
  • 圈多大?任何编程语言(几乎所有)都要支持圈地的大小,即数据类型
  • 数据类型 : char、short、int、long等
  • 提出这些数据类型的目的:约束圈地的范围,C 提供了一个sizeof的关键字来查看这些地的大小。总之就是,定义一个变量时,只是告诉系统我要用多大的一块地。至于后面该怎么去拷贝(赋值)、解码等,那就是后面的事了
  • 这些数据类型没有确定的大小,而只是规定了它们的关系,这就导致各厂家的编译器有不同之处。
    char < short <= int <= long其中char必为1,long最少为4B。
    面试中问int a; sizeof(a) = ?,要回答不确定(与当前系统环境有关)。

printf("%d %u")printf相当于一个解码器,把内存中相同的内容按照不同的方式(%d、%u等)解码输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值