美文网首页
C语言 - 指针

C语言 - 指针

作者: KKWong | 来源:发表于2017-04-21 00:07 被阅读98次

什么是指针

什么是指针?指针其实就是一个变量的内存地址。在使用指针之前,需要声明一个指针变量,指针变量声明格式如下:

type *var_name; //type:指针类型 *:指针符号 var_name:变量名

1. int *var_int; //声明一个int型的指针变量
2. float *var_float;  //声明一个float型的指针变量
3. double *var_double;  //声明一个double型的指针变量

如何使用指针

指针1.png

指针的运算

C指针是一个用数值表示的地址。因此,可以对指针进行++,--,+,- 算术运算。指针的加减运算其实就是指向指针的下一个或上一个字节的地址。假如定义一个int类型的指针,因为int在内存中占4个字节,所以当int指针自增1或加1的时候,在不影响内存位置中实际值得情况下,移动指针到下一个内存位置,既是偏移了4个字节。(偏移的字节数根据类型来决定)

指针2.png

指针变量进行减法运算时,指针地址向上偏移对应的字节个数

指针3.png

指针数组

可以像声明一个普通数组一样来声明一个指针数组,只是指针数组要带上*号:

int *ptr[max];

指针数组与普通数组的操作无异,但是需要注意的一点就是,我们都知道指针变量存储的是内存地址,所以指针数组的元素也应该是内存地址,如果设置了指针数组的元素是一个常量值,那么就会报错.


指针数组.png

指针指向的指针

指针可以指向指针,并且可以不限制的指向,如A指针指向B指针,B指针指向C指针,C指针指向D指针,可以这样一直指向下去.只是指针符号*的个数要对应指针的级别:

int *ptr; //1级指针
int **ptr; //2级指针
int ***ptr; //3级指针
int ****ptr; //4级指针

指针是一个变量,因此也需要开辟内存空间,有内存空间就会有内存地址.A指针指向B指针,其实就是B指针存储了A指针在内存中的地址,然后B指针自身又有内存中的地址.注意B指针自身的内存地址和B存储A指针的内存地址是不一样的.

指针指向指针.png

相关文章

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束...

  • 带小白学C语言指针

    C语言里指针才是C语言的开始和指针;C语言里基本所有东西都是由指针演变而成; 指针是指向地址的变量,类型就是指针...

  • 在Swift中使用C语言的指针

    在Swift中使用C语言的指针 在Swift中使用C语言的指针

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • iOS开发 -- C语言基础8(指针)

    iOS开发 -- C语言基础8(指针) 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很...

网友评论

      本文标题:C语言 - 指针

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