c语言基础知识点及思考(下)

简介: c语言基础知识点及思考(下)

9.

指针

9.1

内存

如何管理内存

举例:

内存中将每一个字节看作一个内存单元

每个内存单元都有编号,其编号可认为其地址

c语言中将地址称为指针

可理解为:

编号==地址==指针

地址的产生:

地址是由地址线传输的,即物理上的电线

,电信号转换为数字信号:1/0

如果是32位的机器,就有32根地址线,

数字上排列组合(32位的二进制序列)有pow(2,32)种可能

其能访问的内存空间为pow(2,32)byte,为4G

为了很好的管理和使用内存

1.将内存划分为以字节为单元的内存单元

2.给每个(内存单元)字节一个编号=地址=指针

显示地址:

调试->窗口->内存

在显示时地址以16进制的形式显示

%p:以16进制的形式打印地址(不省略00)

%x:以16进制的形式打印地址(省略)

并且:

&a:拿出a所占4个字节中地址较小的字节的地址即第一个地址//类似,数组的首地址

指针变量pa:

int *pa = &a;

理解1:

pa是用来存放地址的,所以pa被称为指针变量 // 口头语中简称指针变量为指针

理解2:

*说明pa是指针变量

int说明pa指向的对象的类型是int类型

变量创建的本质是向内存申请空间

int a = 10;

为了存放10这个数值,就像内存申请4个字节的空间

*pa;//解引用操作

*解引用操作符/间接访问操作符

通过pa中存储的地址找到pa所指向的对象,即a

*pa就是a

*pa = 20;

就是

a = 20;

9.2

指针变量的大小

其大小与其所指向的变量大小无关

指针变量用来存放地址,所以指针变量的大小就是地址的大小

//32位机器上,地址是32个0/1组成的二进制序列,地址的存放需要4个字节的空间,所以指针变量的大小是4字节

//64位机器上,地址是64个0/1组成的二进制序列,地址的存放需要8个字节的空间,所以指针变量的大小是8字节

10.

%zd专门用于打印sizeof()的返回值

11.

结构体

c语言的内置类型:

char

short

long

...

结构体用于描述复杂对象

语法形式:

struct xx
{
    类型 变量1;
    类型 变量2;
    类型 变量3;
}
int main()
{
    struct xx a1 = {变量1,变量2,变量3}
    struct xx a2 = {变量1,变量2,变量3}
}

在打印时可用

结构成员访问操作符中的:.

语法形式:

结构体变量.成员名

printf(“”, a1.变量1, a1.变量2);

或使用指针和结构成员访问操作符中的->

struct xx *psa = &a

printf(“”,psa->xx_变量1, psa->xx_变量2);

语法形式:

结构体指针->成员名

12.

一个汉字占两个字节的空间

相关文章
|
4月前
|
C语言
C语言初阶⑧(结构体)知识点和笔试题
C语言初阶⑧(结构体)知识点和笔试题
39 0
|
4月前
|
编译器 C语言
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。(下)
C语言进阶⑪(指针上)(知识点和对应练习)回调函数模拟实现qsort。
37 0
|
4月前
|
存储 编译器 C语言
C语言初阶⑦(指针初阶)知识点+笔试题(上)
C语言初阶⑦(指针初阶)知识点+笔试题
33 0
|
4月前
|
算法 程序员 编译器
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
C语言初阶③(函数)知识点+编程作业(递归模拟strlen,pow)
38 0
|
2月前
|
存储 编译器 C语言
|
2月前
|
前端开发 C语言
C语言08----注释扩展知识点,注释快捷键:ctrl+k,ctrl + C,取消快捷键 ctrl + K,ctrl + U
C语言08----注释扩展知识点,注释快捷键:ctrl+k,ctrl + C,取消快捷键 ctrl + K,ctrl + U
|
3月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
38 3
|
3月前
|
存储 编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)一
30 1
|
3月前
|
C语言
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
C语言----关于二维数组传参的本质相关的知识点(数组指针、指针数组)
|
4月前
|
存储 C语言
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)(下)
C语言初阶④(数组)知识点+编程作业(三子棋,冒泡排序)
31 1