指针的本质与使用场景

目录

1、指针的本质

1.1 指针的定义

1.2 取地址操作符与取值操作符

2、指针的使用场景

2.1 指针的传递

2.2 指针的偏移

2.3 指针与自增、自减运算符

2.4 指针与一维数组

2.5 指针与动态内存申请

2.6 字符指针与字符数组的初始化

3、二级指针

3.1 二级指针的传递

1、指针的本质

1.1 指针的定义

一般在内存地址中存储的是数据,如果我们需要将某个变量的地址保存下来,就需要用到指针。

1.2 取地址操作符与取值操作符

取地址操作符为&,也称引用,通过该操作符我们可以获取一个变量的地址值;取值操作符为*,也称为解引用,通过该操作符我们可以得到一个地址对应的数据。

注意

(1)指针的变量名是p,而不是*p

(2)在定义指针变量时必须指定其类型。需要注意的是,只有整型变量的地址才能放到指向整型变量的指针变量中,依此类推。

(3)连续定义三个指针变量的正确写法

int* a, * b, * c;//定义三个整型的指针变量
int* a, b, c;//一个整型指针变量,两个整型变量

2、指针的使用场景

2.1 指针的传递

普通值传递

#include <stdio.h>

void change(int j);

int main()
{
	int i = 10;
	printf("before change i=%d\n", i);
	change(i);
	printf("after change i=%d\n", i);
	return 0;
}

void change(int j)
{
	j = 5;
}

 经过change函数,i的值仍然为10

 指针传递

#include <stdio.h>

void change(int* j);

int main()
{
	int i = 10;
	printf("before change i=%d\n", i);
	change(&i);
	printf("after change i=%d\n", i);
	return 0;
}

void change(int* j)//j=&i
{
	*j = 5;
}

经过change函数,i的值改变

  

2.2 指针的偏移

指针即地址,就像我们找到了一栋楼,这栋楼的楼号是B,那么住前就是A,往后就是C,所以应用指针的另一个场景就是对其进行加减,但对指针进行乘除是没有意义的,就像家庭住址乘以5没有意义一样。

数组是特殊的,不能和整型变量、浮点型、字符型变量类比。

数组名a,类型是数组,a里边存了一个值,是地址值,是数组的起始地址

#include <stdio.h>

int main()
{
	int a[5] = { 1,2,3,4,5 };
	int* p;
	p = a;
}</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值