美文网首页
二级指针与指针的运算

二级指针与指针的运算

作者: 贝克街的猫大哥呀 | 来源:发表于2017-08-20 01:00 被阅读0次

上回说到,指针,是变量的内存地址

其实二级指针,就是一级指针的内存地址

void main(){

   int i = 90;

   int *p = &i;

   int **p2 = &p;

   printf("%d",**p2);

   system("pause");

}

上面描述中,定义了一级指针p,二级指针p2

可以明显看出,*p2,就是一级指针p的地址,**p2,就是90! 就是最终的值!很通顺啊--

现在说说指针的运算

void main(){

      int num[] = {11,12,13,14,15};

      int *p = num;

      p++;

      printf("%d",*p);

      system("pause");

}

可以看出,num直接就是内存地址了,而不用写&num,实际上,写&num还会报错,过不了编译。这点跟JAVA是一样的,对于数组为讲,直接num,就是指的是内存地址!而且!是数组中的第一个元素的内存地址!!

固p++就好理解了,就是下一个元素的内存地址嘛,所以这里输出的是,是12

对应的,也有p--,指上一个元素的内存地址

这个机制背后的原因,就是数组的内存地址,其实是线性增加的!p++,就是将内存地址的值,向右移了sizeof(int)个单位! 在这里就是向右偏移了4个字节。

因此可以看出,指针的加减,其实只有在数组里有意义,更确切的实际使用地点,是在数组遍历的时候。

来个例子,这个例子是很原始,很低级语言的一种写法

void main(){

   int num[5];

   int *p = num;

   int i = 0;

   for (; p < num + 5;p++){

         *p = i;

          i++;

         printf("%d\n", *p);

}

   system("pause");

}

在for中,p是指针!num是数组第一个元素的内存地址,num+5,就是最后一个数组中最后一个元素的内存地址。 可能会有疑问,int不是应该有4个字节吗,这里怎么看出来,只+1就行了。 注意,这里是指针,+1,就表示向右移了4个字节!!! 固这里的输出就是,0,1,2,3,4。

相关文章

  • 学习笔记3(指针运算,函数参数与指针,数组指针,二级指针)

    一、指针运算 二、数组与指针 三、指针和函数参数 java中: C/C++中: 四、指针数组 五、 二级指针 六、...

  • ndk02_指针运算,函数参数与指针,数组指针,二级指针

    一、指针运算 二、数组与指针 三、指针和函数参数 四、指针数组 五、 二级指针 六、知识要点 1、C语言中的函数如...

  • * 与 & 以及二级指针

    *: 星号,用来声明指针的; &:连字号运算符,定义内存位置; 二级指针:指向指针的指针。 指针 指针是一个变量,...

  • 二级指针与指针的运算

    上回说到,指针,是变量的内存地址 其实二级指针,就是一级指针的内存地址 void main(){ int i = ...

  • 10.3 指针

    [二级指针]定义指针 [指针的区地址]同其他变量一样,指针变量也有自己的地址和值,对指针而言,&运算符给出指针本身...

  • C初阶5:指针

    1. 指针运算 1.1 算术运算 加减+、-指针与整数相加:表示指针指向下个变量。指针与整数相减:表示指针指向上个...

  • 02-C语言的指针

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

  • C语言的指针大归纳Three

    【指针的算术运算】 指针运算与普通数值运算不同,先给个例子吧;eg: /* 结合【C语言的指针大归纳Two】的知识...

  • iOS 指针(C指针)

    运算符 & 指针变量的定义 指针与数组

  • C语言——第四次笔记

    指针指针的定义指针的类型指针的指向内容指针的运算数组与指针指针与函数动态分配内存结构体文件读写头文件与实现文件实例...

网友评论

      本文标题:二级指针与指针的运算

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