C语言----指针

目录

1.概念

2.格式

3.指针操作符

4.初始化

1. 将普通变量的地址赋值给指针变量

a. 将数组的首地址赋值给指针变量

b. 将指针变量里面保存的地址赋值给另一个指针变量

5.指针运算

5.1算术运算

5.2 关系运算

指针的大小

总结:

段错误

指针修饰

1. const修饰

2. void

大小端

二级指针

指针和数组

1. 指针和一维数组

直接访问:

间接访问:

2. 指针和二维数组

直接访问:

间接访问:

数组指针

数组指针

定义:本质是指针,指向的是数组(又称行指针)

格式:存储类型数据类型(*指针变量名)[列数];

大小


指针的优点:

  1. 使程序更加简洁、紧凑、高效
  2. 有效的表达更复杂的数据结构
  3. 动态分配内存
  4. 得到多余一个数的函数的返回值

1.概念

地址:内存中每个字节单元都有点编号

指针:指针就是地址

指针变量:用于存放地址的变量叫做指针变量

2.格式

存储类型 数据类型 * 指针变量名

int* p;

使用:

int a=5;

int* p=&a;

char ch=‘t’;

char* p=&ch;

3.指针操作符

&:取地址符--->取变量的地址

*:取内容 --->取地址里面的内容

*&a==a;// *和&是互逆运算

// a是变量就是错的,a是地址就是对的

&*a

4.初始化

指针变量只使用前不仅要定义还要初始化,未初始化的指针变量是不能随便使用的,会产生野指针

int* p;

1. 将普通变量的地址赋值给指针变量

int a=10;
1)int* p=&a;//定义的同时赋值
2)int* p=NULL;//先定义指针变量在进行赋值
p=&a;

int* p = NULL; // int *p
p = &a;
printf("%d %d\n", a, *p);  // 打印 a 的值 10 10
printf("%p %p\n", &a, p);  // 打印 a 的地址

*p = 3;
printf("%d %d\n", a, *p);  // 打印 a 的值 3 3
printf("%p %p\n", &a, p);  // 打印 a 的地址
a. 将数组的首地址赋值给指针变量

char str[10] = "hello";

char* p = str; // 指针指向数组的首地址,指向字符'h'的地址

b. 将指针变量里面保存的地址赋值给另一个指针变量

floatf = 1.3;

float* p = &f;

float* q = p;

5.指针运算

5.1算术运算

char str[32] = "hello";

char* p = str;

p++; // 指针向高地址方向移动一个数据单位(看数据类型),指针指向发生变化

p--; // 指针向低地址方向移动一个数据单位(看数据类型),指针指向发生变化

int* p; p++;// 移动4字节

double*p; p++; // 移动8字节

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WeeJot

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值