指针

作者: nytta | 来源:发表于2018-12-09 00:27 被阅读13次

地址运算符:指针&

C语言中最重要的,也是最复杂的,概念之一就是指针,也是用来存储地址的变量。
一般来说,当需要改变调用函数中的某个参数数值时,任何被调用的无返回值C函数都需要使用地址来完成这个任务。
一元运算符&可以取得变量的存储地址,如pooh是一个变量名,则&pooh就是变量pooh的地址,可以看作变量pooh在内存中的存储位置。

1.使用指针

int i = 0; /* 声明和初始化int变量i,值为0 /
int * ipointer; /
声明int类型的指针变量ipointer /
ipointer = &i; /
指针变量ipointer的值为变量i的地址 */

2.间接运算符: *

当后面跟着是一个指针变量或地址时,*给出存储在地址里的数值,如:
int var = 0;
int * varptr = &var;
int var2 = *varptr;
*varptr表示指针varptr地址存储里的数值,那么变量var2的值等于变量var数值

3.指针操作

C提供了6种基本的指针操作。

3.1 赋值

可以把一个地址赋给指针。通常使用数组名或地址运算符&来进行地址赋值。

3.2 求值

运算符*可取出指针指向地址中存储的数值。

3.3 取指针地址

指针变量同其他变量一样具有地址和数值,使用运算符&可以得到存储指针本身的地址。

3.4 将一个整数加给指针

可以使用+运算符来把一个整数加给一个指针,或者把一个指针加给一个正数。两种情况下,这个整数都会和指针所指类型的字节相乘,然后所得的结果会加到初始地址上。
如果想加的结果超出了初始化所指向的数组的范围,那么这个结果是不确定的,除非超出数组最后一个元素的地址能够确保是有效的。

3.5 增加指针的值

可以通过一般的加法或增量运算符来增加一个指针的值。对指向某数组元素的指针做增量运算,可以让指针指向该数组的下一个元素。比如指针变量ptr指向数组的第1个元素,进行ptr++操作,则ptr会指向数组的第2个元素。

3.6 从指针中减去一个整数

可以使用-运算符来从一个指针中减去一个整数。指针必须是第一个操作数,或者是一个指向整数的指针。这个整数都会和指针所指类型的字节数相乘,然后所得的结果会从初始地址中减掉,如果相减的结果超出了初始指针所指向的数组的范围,那么这个结果是不确定的,除非超出数组最后一个元素的地址能够确保是有效的。

3.7 减小指针的值

指针当然也可以做减量运算。比如指针变量ptr指向数组的第3个元素,进行ptr--操作,则ptr会指向数组的第2个元素。

3.8 求差值

可以求出两个指针间的差值。通常对分别指向同一个数组内的两个元素的指针求差值,以求出两个元素之间的距离。比如指针变量ptr2指向数组第3个元素,指针变量指向ptr0指向数组的第1个元素,则ptr2 - ptr0的值是2,表示指针所指向对象之间的距离为2个int数值大小。

3.9 比较

可以使用关系运算符来比较两个指针的值,前提是两个指针具有相同的类型。

相关文章

  • 混淆知识点

    1、指针数组&数组指针、常量指针&指针常量、函数指针&指针函数 数组指针&指针数组 数组指针的定义 int (*p...

  • C语言

    C 指针、指针变量、函数指针、指针函数、指针数组、数组指针、C 数组

  • 指针

    普通指针指针的指针 数组指针 函数指针

  • 函数指针

    概念: 指针函数, 函数指针, 指针数组, 数组指针, 指向数组的指针, 指向函数指针数组的指针。

  • C:函数指针的坑

    关于该死的函数指针和指针函数 先来个目录 常量指针、指针常量 数组指针、指针数组 函数指针、指针函数 1、先看第一...

  • C 语言指针

    指针类型:指针的读取长度,指针的读取方向(大小端) 空指针,无类型指针,野指针 常量指针,指向常量的指针 http...

  • 二、C语言基础

    A、指针 指针的概念:指针变量 和 指针 的区别 ?答:指针变量是指针的标记,也可以通过指针变量的标记操作指针内存...

  • 王道程序员求职宝典(十一)指针与引用,树

    指针与引用 指针声明typedef别名类型检查void*指针指向指针的指针函数指针typedef简化函数指针定义初...

  • NDK02

    指针 指针概念 1 .指针变量和指针的区别?答: 指针变量是定义指针的标记,指针就是指向的内存地址。2 .函数指针...

  • 12 C指针

    1、指针定义 2、指针进阶 3、指针使用 4、多级指针 4、指针和数组 5、指针和字符串 6、高级指针之和指向函数的指针

网友评论

    本文标题:指针

    本文链接:https://www.haomeiwen.com/subject/fmthhqtx.html