• 数组&指针


    https://blog.csdn.net/yesyes120/article/details/78919149

    1、数组名+1,是增加数组元素对应的数据类型的字节数;

          数组名地址+1,是增加数组大小的字节数;  //例如5个int*4;

    2、指针+1,是增加指针类型对应的字节数;

          指针地址+1,是增加8(64位),或者4(32位)

     1 #include<iostream>
     2 #include<string.h>
     3 using namespace std;
     4 int main()
     5 {
     6     int x=5,*p_int=&x;
     7     int aa[10]={1,2,3,4,5,6,7,8,9,10};
     8     
     9     cout<<"
    aa:	"<<aa<<"
    aa+1:	"<<aa+1;
    10     cout<<"
    &aa:	"<<&aa<<"
    &aa+1:	"<<&aa+1<<"
    
    ";
    11     
    12     cout<<"
    p_int:	"<<p_int<<"
    p_int+1:"<<p_int+1;
    13     cout<<"
    &p_int:	"<<&p_int<<"
    &p_int+1:"<<&p_int+1;
    14     
    15     return 0;
    16 }
    View Code
    1 int array[5]={1,2,3,4,5};
    2 cout<<*(*(&array+1)-1);
    3 
    4 =5
    View Code

    *(*(&array+1)-1)里,
    &array是取array的地址;
    &array+1就是在array的地址的基础上向前跑4*5个字节;
    *(&array+1)就是在数组末尾再往后一个字节的地址;
    *(&array+1)-1就是数组末尾的地址;
    *(*(&array+1)-1)就是数组末尾的那个元素。

    这里&array+1结果与*(&array+1)结果一样!!!???

     3、数组指针 & 指针数组

    https://www.cnblogs.com/jianfeijiang/p/5914398.html

        //a) 一个整型数( An integer)
        int a;
        //b) 一个指向整型数的指针( A pointer to an integer)
        int *b;
        //c) 一个指向指针的的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer)
        int **c;
        //d) 一个有 10 个整型数的数组( An array of 10 integers)
        int d[10];
        //e) 一个有 10 个指针的数组,该指针是指向一个整型数的( An array of 10 pointers to integers)
        int *e[10]
        //f) 一个指向有 10 个整型数数组的指针( A pointer to an array of 10 integers)
        int (*f)[10];
        //g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数( A pointer to a functionthat takes an integer as an argument and returns an integer)
        int *g(int);
        //h) 一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer 
        int (*h[10])(int);
    

        int a[10]={}中&a的类型与int (*a)[10]中b的类型一致;typeid(a).name( )均是 int (*) [10];

  • 相关阅读:
    SQL 递归查询(根据指定的节点向上获取所有父节点,向下获取所有子节点)
    限流脚本
    使用DANT做FTP的转发代理
    忘记token怎么加入k8s集群
    CentOS7.x使用overlay2文件系统
    文件已删除但句柄没有释放导致磁盘空间用完
    多线程学习(一)什么是多线程?
    自己用过的web软件tools软件以及玩过的游戏
    day1 学习历程
    git合并请求
  • 原文地址:https://www.cnblogs.com/wllwqdeai/p/10685305.html
Copyright © 2020-2023  润新知