指针

2015-07-08  本文已影响86人  zhazha

指针经典题

思考:以下小程序,输出结果是多少?

    int numbers[4] = {10, 20, 30, 40, 50};

    int *p = (int *)(&numbers + 1);

    NSLog(@"%d", *(p - 1));

思路分析

首先分析一维数组

    int numbers[4] = {10, 20, 30, 40};

    NSLog(@"%p %p", numbers, numbers + 1);
    NSLog(@"%p %p", &numbers, &numbers + 1);

其次分析二维数组

     int numbers[2][2] = {
         {10, 20}, // numbers[0]
         {11, 22} // numbers[1]
        };

最后分析三维数组

    int numbers[2][2][2] = {
        {
            {10, 11},
            {12, 13}
         },
         {
            {14, 15},
            {16, 17}
         }
        };

解答

    int numbers[4] = {10, 20, 30, 40, 50};

    int *p = (int *)(&numbers + 1);

    NSLog(@"%d", *(p - 1));

结论

指针p的加减法运算

数组名

其他结论

上一篇 下一篇

猜你喜欢

热点阅读