张邦焱 发表于 2021-3-15 20:51:15

指针小问题


#include<stdio.h>
int main()
{
        int a = { 1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1 };
        int *p;
        for ( p = &a; p <= &a; p++ )
        {
                if ((p - &a) % 4 == 0)                  //换行 3行4列
                        printf("\n");
                printf("%d\t", *p);       
        }
        printf("\n");
        return 0;
}

#include<stdio.h>
int main()
{
        int a = { 1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1 };
        int *p;
        for ( p = &a; p < &a; p++ )
        {
                if ((p - &a) % 4 == 0)                  //换行 3行4列
                        printf("\n");
                printf("%d\t", *p);       
        }
        printf("\n");
        return 0;
}

这两个for循环输出竟然不一样
for ( p = &a; p <= &a; p++ )
for ( p = &a; p <   &a; p++ )

洋洋痒 发表于 2021-3-15 21:10:52

二维数组初始化只需要一个大括号吗?
你的&a没有超出数组范围吗?

海-啵啵鱼 发表于 2021-3-16 15:20:01

肯定不一样啊,第一个是对的,数组的行列下标都是从0开始,你for里面写个a就是超数组范围了,读到的不知道是什么垃圾值。

第一段输出12个,第二段输出16个。
页: [1]
查看完整版本: 指针小问题