指针

作者: 活最好的自己 | 来源:发表于2019-02-21 12:00 被阅读1次

一, 数组名 == 指针变量

如下代码的输出结果, 是数组 a 的第一个元素

- (void)testArray{
    int a[3]={1,2,3};
    int *num[3];
    int **p,i;
    for(i=0;i<3;i++)
        num[i]=&a[i];
    p=num;
    printf("%p---%p",p,num);// 0x7ffee5800930---0x7ffee5800930
    printf("%d",**p);
}

分析如下:

  1. int *num[3] 可以看成 (int *) num[3], 存放了三个整型地址的数组, 数组的每个元素都存放的是地址, 这个地址指向的内存中的数据, 要按照整型数据来读取.
  2. p=numnum 中存放的内容赋值到 p 的内存中, 即将指针p 的指向和数组的首地址 num的指向一样, 即数组中第一个元素的地址, (*p)就等价于* num, 也就是 num[0], 而 num[0] 又被赋值为a[0]的地址, 则*(* p)就是 a[0]的内容了.
    (PS:char *name = (char *)malloc(sizeof(char)*10)可以把这段代码中的 name 理解成数组的指针, 指向数组开始的地方...只是这里是动态开辟内存, 数组是静态开辟内存.)
  3. p 是一个指针, 不管是几级指针, 变量的内存空间始终是一个字, 和计算机的位数有关, 也就是计算机的寻址范围.
  4. 使用 %p 打印的是指针变量p中存放的地址内容, 而不是p的内存地址,p 的内存地址可以用&p打印出来.
  5. num[4] 相当于 *(num+4), 要清醒 num+4 只是一个指针.

相关文章

  • 混淆知识点

    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/xzkryqtx.html