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

2020-12-10  本文已影响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
// 单独的数组名表示 :数组第一个元素的地址,并且增加的单元也是一个元素的内存大小
// 数组名前加上&:表示以整个数组为单位的地址,增加的单元为整个数组的大小
上一篇下一篇

猜你喜欢

热点阅读