美文网首页
一个经典的数组地址与指针的面试题

一个经典的数组地址与指针的面试题

作者: 富城 | 来源:发表于2020-12-10 20:21 被阅读0次
    int numb[4] = {10, 20, 30, 40};
    int *p = (int *)(&numb + 1);
    NSLog(@"%d", *(p - 1));
    

    答案是 40

    int num[2][2][2] = {
            {
                {10, 20},
                {30, 40}
            },
            {
                {50, 60},
                {70, 80}
            },
        };
        
        NSLog(@"%p---%p", num, num[0]+1); //0x7ffeeb202ba0---0x7ffeeb202ba8
        NSLog(@"%p---%p", num, num[0][0]+1);  //0x7ffeeb25bba0---0x7ffeeb25bba4
        NSLog(@"%p---%p", num, &num[0][0]+1); //0x7ffeeb202ba0---0x7ffeeb202ba8
        
        int numb[4] = {10, 20, 30, 40};
        NSLog(@"%p---%p", numb, numb+1);  // 0x7ffeea462bb0---0x7ffeea462bb4
        NSLog(@"%p---%p", &numb, &numb+1);  // 0x7ffeea462bb0---0x7ffeea462bc0
    
    // 单独的数组名表示 :数组第一个元素的地址,并且增加的单元也是一个元素的内存大小
    // 数组名前加上&:表示以整个数组为单位的地址,增加的单元为整个数组的大小

    相关文章

      网友评论

          本文标题:一个经典的数组地址与指针的面试题

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