初识C语言(5)

简介: 初识C语言(5)

13.指针(首先要理解内存)

13.1内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是 1 个字节 。

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址 。

内存---是计算机上的一种存储空间

          8G/16G

          程序运行的时候会载入内存

         程序中如果有数据需要存储也会申请内存空间

如何有效的使用内存呢?


补充:

1、计算机的单位:

bit-比特位-一个比特位存放一个二进制

byte-字节-8bit

kb-1024byte

mb-1024kb

gb-1024mb

tb-1024gb

tb-1024tb

pb-1024tb

个字节=4,294,967,296byte=4GB

2、进制,只是数值的表示形式

(1)进制转换

基数:把X进制所使用的数字符号个数称为该进制的基数(几进制,基数就是几)

位权:基数的方幂称为“位权”(简称“权”)

运算规则:采用“逢N进一”的原则

补充:位权以基数为底,指数是小数点左侧为0,1,......,小数点右侧为-1,-2,......,

1)非十转 十:按权展开

2)十转非十:

整数部分-取余倒排序法,


小数部分-乘以基数取整(正读) (了解)

(3)非十进制间相互转换

二转八---三位并一位

二转十六---四位并一位

因为15已是十六进制最大的数了

1、变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的


地址:二进制表示太复杂转成十六进制

2、&a只能取出一个地址,&a取出的是a所占内存空间的四个字节中第一个字节的地址


3.指针变量

(1)那地址如何存储,需要定义指针变量。



(2)指针的使用实例:(就是相当于通过地址找到人,把东西送给这个人)


13.2 指针变量的大小

1.一个指针变量的大小是多少呢?

指针变量是存放地址的!

地址:

(1)32位机器上,是32个bit

32位的机器上,指针变量存放的是32bit的地址

32位机器上,指针变量的大小是4个字节

(2)64位机器上,是64个bit

64位的机器上,指针变量存放的是64bit的地址

64位机器上,指针变量存放的大小是8个字节

(3)X86是32位环境,X64是64位环境


总结:指针大小在32位平台是4个字节,64位平台是8个字节。

14、结构体

结构体是 C 语言中特别重要的知识点,结构体使得 C 语言有能力描述复杂类型。

复杂对象:如

人:姓名,性别,年龄

书:书名,作者,出版社,定价

这里只能使用结构体来描述了。

//struct-结构体
//学生:名字-性别-年龄
//定义一个学生类型
#include<stdio.h>
struct stu
{
  char name[20];
  char sex[5];
  int age;
};
int main()
{
  struct stu s = { "张三","男",20 };
  //结构体名字.成员名
  printf("%s\n", s.name);
  printf("%d\n", s.age);
  return 0;
}

//.为结构体成员访问操作符

//struct-结构体
//学生:名字-性别-年龄
//定义一个学生类型
#include<stdio.h>
struct stu
{
  char name[20];
  char sex[5];
  int age;
};
void print(struct stu* ps)
{
  //printf("%s %s %d\n", (*ps).name, (*ps).sex, (*ps).age);
  //第二种写法,等同上
  //->操作符
  //结构体的指针->成员名
  printf("%s %s %d\n", ps->name, ps->sex, ps->age);
}
int main()
{
  struct stu s = { "张三","男",20 };
  print(&s);//调用函数
  return 0;
}

初识C语言就到这,我们只是大概了解,接下来开始正式深入了解。

相关文章
|
11月前
|
存储 移动开发 JavaScript
vuex的工作流程,模块化使用案例分享,及状态持久化
vuex的工作流程,模块化使用案例分享,及状态持久化
222 0
|
数据安全/隐私保护
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
282 0
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
|
弹性计算 数据挖掘 应用服务中间件
阿里云服务器通用算力型U1实例解析,实例性能、适用场景及常见问题参考
在阿里云服务器的所有实例规格中,通用算力型u1实例主打的是高性价比,通用算力型U1实例云服务器自推出以来,就受到了广大用户的关注,也是目前阿里云的活动中比较热门的云服务器实例,这个实例规格的性能要好于经济型e等共享型实例,价格又比计算型c7、通用型g7等其他企业级实例要低一些。本文将深入解析通用算力型U1实例的特点、适用场景以及价格优势,帮助用户更好地了解该云服务器实例。
阿里云服务器通用算力型U1实例解析,实例性能、适用场景及常见问题参考
|
开发框架 前端开发 Java
Spring和Spring Boot:两者的区别与应用场景
Spring和Spring Boot:两者的区别与应用场景
351 1
npm ERR! typeerror Error: Missing required argument #1
npm ERR! typeerror Error: Missing required argument #1
887 0
|
资源调度 前端开发 JavaScript
ACEeditor使用手册(一)
ACEeditor使用手册(一)
801 1
|
算法 Java 大数据
利用Java实现随机采样
利用Java实现随机采样
457 0
|
前端开发 NoSQL easyexcel
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)-2
前后端分离项目知识汇总(阿里云Oss,EasyExcel,视频点播,SpringCloud,Redis,Nuxt)
294 0
【太好用了!】使用openpyxl 对比两个excel表格之间的差异
【太好用了!】使用openpyxl 对比两个excel表格之间的差异