C语言—指针(二)

本文介绍了指针的运算,包括指针加减整数、指针减指针和指针的关系运算。讨论了指针与数组的结合使用,以及二级指针的概念,展示如何通过二级指针修改变量的值。此外,还提到了指针数组,即数组中存储的是其他变量或数组的地址。最后,预告将讲解结构体的相关知识。
摘要由CSDN通过智能技术生成

目录

一、指针的运算。

1.1指针加减整数

 1.2 指针减指针

 1.3 指针的关系运算

 二、指针和数组

三、二级指针

四、指针数组


大家好我来更新博客了,欢迎大家的点赞。今天我们来讲指针的下部分内容。

一、指针的运算。

1.1指针加减整数

指针加减整数是指,把指针的后面加上或减去一个整数,就相当于让指针的指向内容发生变化,然后就可以访问相应的变量了。下图模拟实现了strlen函数,通过指针的加减访问不同的元素,如果*str遇到了 '\0'循环停止,那么str加了几次,就是该字符串的长度。

 1.2 指针减指针

指针减指针,得出的是指针和指针之间的元素个数。会有正负数。

 1.3 指针的关系运算

指针的关系运算需要知道,不支持指针与指向第一个元素之前那个内存位置的指针进行比较的,

允许指针与指向最后一个元素之后的那个内存位置的指针进行比较,什么意思呢我们来画图解释。

可以看一下这个代码:

for(vp = &values[N_VALUES]; vp > &values[0];)
{
    *--vp = 0;
}

 这个代码是p指针和end指针可以比较。

for(vp = &values[N_VALUES-1]; vp >= &values[0];vp--)
{
    *vp = 0;
}

 这个代码是p指针和first指针不可以比较。

 编译器是可以完成指针的比较的,然而我们应该避免这样写,因为标准并不保证它可行。

 二、指针和数组

指针是可以和数组进行连用的,数组首元素地址是数组名。由于指针可以运算,我们可以通过指针的加减来访问数组。注意不同类型指针每一次移动的字节数,比如char一个字节,int四个字节。我们通过代码来验证数组首元素地址是数组名。

 可以看到,打印出来的地址是一样的。

注意两种情况:

  • sizeof里面的数组名表示整个数组。
  • &arr取出的是整个数组的地址。

既然可以把数组名当成一个地址来放到指针中,我们使用指针来访问一个数组就成为了可能。

看以下代码:

 

 指针和数组介绍完毕!

三、二级指针

二级指针存放的是指针的地址。我们可以看一下这个代码:

int main()
{
	int a = 10;
	int* pa = &a;
	int** ppa = &pa; //指针变量的地址存入二级指针。
	**ppa = 20;
	printf("%d\n", a);
}

**ppa可以访问到a。通过二次解引用就可以修改a的值了。 

四、指针数组

指针数组是指,数组里面存放的是地址。通过这个地址可以访问到它所指向的变量,数组。请看以下代码:

 

 

 

好的初阶指针讲解完毕,接下来给大家带来结构体初阶。 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值