美文网首页
数组和指针

数组和指针

作者: 越天高 | 来源:发表于2019-02-18 21:21 被阅读3次

数组名就是数组的地址, 数组的地址就是首元素的地址
由于数组的首元素的地址就是数组的地址, 所以定义一个指针指向数组其实就是定义一个指针指向数组的首元素, 所以数组的首元素是什么类型, 那么指向数组的指针就是什么类型。

    int ages[3] = {1, 3 , 5};
    printf("ages = %p\n", ages);
    printf("&ages[0] = %p\n", &ages[0]);

    int *p = &ages[0];
    int *p = ages;
    printf("p = %p\n", p);

如何利用指针操作数组

    int ages[3] = {1, 3 , 5};
    
    ages[0] = 998;
    printf("ages[0] = %i\n", ages[0]);
    
    int *p = ages; // int *p = &ages[0]; &ages[0] == ages
    printf("p = %p\n", p);
    printf("ages = %p\n", ages); // p == ages;

    // 因为p指针中存储的值和ages中存储的值相同, 所以以前用ages的地方都可以使用p来替代
    p[0] = 889;
    printf("ages[0] = %i\n", p[0]);
    
    for (int i = 0; i < 3; i++) {
        printf("p%i] = %i\n", i, p[i]);
    }

    int ages[3] = {1, 3 , 5};
    int *p;
    p = ages; // int *p = &ages[0];
    printf("ages[0] = %i\n", ages[0]);
    printf("*p = %i\n", *p);
    
    printf("p = %p\n", p);

    p = &ages[1];
    // 指针+1, 并不是真实的+1, 而是+4
    // 指针类型的两个用途: 
       第一个用途, 取值的时候, 会根据指针类型所占用的字节去取出对应字节的数据 
       第二个用途, 用于做加法运算, 指针+1, 其实是加上指针类型所占用的长度 , 如果当前指针类型是int, 那么+1本质上是加上4个字节

    p = p + 1;
    printf("p + 1 = %p\n", p);
    printf("*p = %i\n", *p);
   
    p = &ages[2];
    p =  p + 1;
    printf("p + 1 = %p\n", p);
    printf("*p = %i\n", *p);
    
    int a = 10;
    a = a  + 1;
   printf("a = %i\n", a);  // 11

 
    char c = 'a';
    char *cp = &c;
    printf("cp = %p\n", cp);
    cp = cp + 1;
    printf("cp + 1 = %p\n", cp);
    cp = cp + 1;
    printf("cp + 1 = %p\n", cp);
    
    int ages[3] = {1, 3 , 5};
    int *p;
    p = ages;
    
    printf("ages[0] = %i\n", *(p + 0));
    printf("ages[1] = %i\n", *(p + 1)); // p = p + 1; *p;
    printf("ages[2] = %i\n", *(p + 2));
     
    /*
    for (int i = 0; i < 3; i++) {
        // 指针+1, 是加上指针类型所占用的长度
        printf("ages[%i] = %i\n", i, *(p + i));
    }
     */
    
    /*
     只要一个指针指向了数组, 那么访问数组就有3种方式:
     1. : ages[0];
     2. : p[0];
     3. : *(p + 0);
     */
    
    printf("ages[0] = %i\n", 2[p]);

指针类型的特点

只要是数据类型就具备3个特点
1. 可以用来定义变量
2. 可以用来作为形参的类型
3. 作为返回值

相关文章

  • C语言指针相关

    一、指针数组 和 数组指针的区别:1:指针数组,还是数组,数组每个元素是指针。2:数组指针,是指针,指向的是数组。...

  • JNI基础 -- C++基础知识(指针数组)

    数组和指针,数组指针,指针数组 数组 声明一个数组 这个比较简单,不做过多介绍 数组指针 数组指针是一个指针,指向...

  • 数组指针和指针数组

    1.数组名 数组首元素的地址和数组地址是两个不同的概念 数组名代表数组首元素的地址,它是个常量. 变量本质是内存空...

  • 数组指针和指针数组

    1.数组指针(又称行指针) 二维数组赋给一指针时: 2.指针数组 二维数组赋给一指针数组: 小结:数组指针只是个指...

  • 数组指针和指针数组

    指针*p不仅仅是地址(数据访问的位置),还包括所指向类型,即p+1移动的步长(如何访问)。数组指针,char (*...

  • 数组指针和指针数组

    输出结果:Example 数组指针:我我是是大大好人好人Example 指针数组: 我是大好人

  • 数组指针和指针数组

    https://www.cnblogs.com/mq0036/p/3382732.html 一维数组名和二维数组名...

  • 关于二维数组及数组指针和指针数组的深度思考(涉及指针)

    转载请注明在纠结指针数组和数组指针时无意发现的小细节。总算搞清数组指针和指针数组。 数组指针定义 int (*p)...

  • 指针

    指针 数组指针和指针数组 函数指针和指针函数 指针作为参数 指针多用于处理值传递,减少值复制耗费的内存

  • C语言特性(指针数组和指向指针变量的指针)

    指针数组和指向指针变量的指针 指针数组与main()函数形参 声明指针数组与声明普通数组的语法类似,其语法格式如下...

网友评论

      本文标题:数组和指针

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