C语言学习笔记day18

  1. 指针基本概念

1.地址:用来区分内存中不同字节的编号

2.指针:地址就是指针,指针就是地址

3.指针变量:存储指针的变量,有时去掉变量,称为指针

  1. 指针运算符

1.&:

1.获得一个变量在内存空间中的首地址

2.让表达式类型升级

2.*:

1.取指针指向空间中的值(所取空间大小取决于指针类型)

2.将等号右边的值放入指针指向的空间

3.让表达式类型降级

二级指针在C语言中2个地方使用:

1.函数体内部想修改函数体外部指针变量值的时候,传指针变量的地址也就是二级指针

2.指针数组传参时,数组的数组名是指向数组第一个指针元素的指针,也就是二级指针

  1. 指针的算数运算
  • 指针偏移量为指向的数据类型大小个字节空间

++

--

int *: 4

char *: 1

double *: 8

struct student*: 44

int **: 8

  1. void指针

void a;

void *p;

void指针常用来存储内存地址

1.void类型指针不要使用* ++ --相关操作

void *型指针和其余类型指针的转换

void * -> char * 不需要做强制类型转换

double *

int *

char * -> void * 需要类型转换(舍弃精度)

double *

int *

主要用在作为函数参数,或者函数返回值表示兼容所有类型指针

将内存地址为0x2000的空间赋值一个整形100

(*(int *)((void *)0x2000)) = 100;

  1. const指针

1.const int *p;

2.int const *p;

3.int *const p;

4.const int *const p;

5.int const *const p;

1和2是等价的

p可以改变,*p不可以改变

p可以指向任意空间,但无法利用p修改指针空间的值

3

p不能改变,*p可以改变

p只能指向初始化时的空间,无法指向其余空间,但可以利用指针修改指向空间的值

注意:必须初始化

数组的数组名

4和5是等价的

p不能改变, *p不能改变

注意:必须初始化

  1. 指针数组和数组指针

指针数组:

int *a5;

定义一个数组,数组有5个元素,每个元素8个字节,共40个字节,每个元素都是指向

整形变量的指针

char *pstr5;

存储字符串数组使用二维数组

操作字符串数组使用指针数组

相关推荐
乌暮1 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
starzy19904 小时前
深入理解Scala隐式值:编译期自动装配
开发语言·后端·scala
Go Work4 小时前
docker 占满根分区时先分清谁在吃盘
经验分享·笔记
布莱克6054 小时前
Swift 条件语句详解:从 if 到 switch 的完整指南
开发语言·ssh·swift·switch·条件语句·guard·if
吴可可1235 小时前
ActiveX调用WScript.Shell原理揭秘
开发语言
3095566665 小时前
股票接口返回 404 与空数组的排查笔记:证书状态与级别参数
java·笔记·python·ios·iphone·股票数据api·股票数据接口
蒸蒸yyyyzwd5 小时前
从邓明学习的后端笔记
笔记·学习
岑梓铭6 小时前
《考研408数据结构》第八章(排序)复习笔记
数据结构·笔记
机器学习之心6 小时前
基于变量相关图与残差学习的 GCN 多变量回归方法——混凝土 28 天抗压强度预测
学习·回归·gcn
晴天的雨.9926 小时前
【C++】继承篇
java·开发语言·c++