八戒253 发表于 2021-2-3 09:55:04

二维数组指针问题

{:10_283:}
#include <stdio.h>
int main(){
        int array={0};
        int i,j,k=0;
        for(i=0;i<20;i++){
                for(j=0;j<5;j++){
                        array=k++;
                }
        }
        printf("array+1 what:%p\n",array+1);
       
        printf("*(array+1):%p",*(array+1));
       
        return 0;
}运行结果:为什么是一样的?

{:10_319:}   

han125416866 发表于 2021-2-3 09:55:05

%p本来就是打印地址的转义符第一个是打印array+1的地址第二个是打印array+1值的地址,所以当然是一样的了

小甲鱼的铁粉 发表于 2021-2-3 11:39:15

这么神奇的么?

八戒253 发表于 2021-2-3 14:37:44

小甲鱼的铁粉 发表于 2021-2-3 11:39
这么神奇的么?

{:10_302:}

DaggerRoo 发表于 2021-2-3 17:31:35

两个打印的都是array + 1 的地址,所以值一样。
如果想要打印array + 1的值的话, 首先把第二个打印的 %p 改成 %d, 然后*(array + 1)改为**(array + 1)。
(偷偷说一句:外层循环应该是i < 4吧 :p)
页: [1]
查看完整版本: 二维数组指针问题