标题:关于 int (*a)[10] 这个语句的问题
取消只看楼主
木胖子
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2018-12-17
结帖率:100%
已结贴  问题点数:20 回复次数:1 
关于 int (*a)[10] 这个语句的问题
具体问题如下,一个指向数组的指针
定义:int(*p)[10];
赋值时候,将它指向一个具有10个元素的int型数组a;
打印p出现如下效果。   
程序代码:
void main()
{
    int i;
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int (*p)[10];
    p = a;
    for(i=0;i<10;i++)
    {
        printf("%d\n",*(p+i));
        
    }
    system("pause");
    
}


图1


发现p=a出有一个警告:int *型   分配给 int(*)[10]类型。
于是改进一下用强制转换,然而打印出来,仍旧是这个样子。
程序代码:
#include <stdio.h>
#include <stdlib.h>

void main()
{
    int i;
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int (*p)[10];
    p = (int (*)[10])a;
    for(i=0;i<10;i++)
    {
        printf("%d\n",*(p+i));
        
    }
    system("pause");
    
}


图2


最后,用上了二级指针,正常了。
程序代码:
#include <stdio.h>
#include <stdlib.h>

void main()
{
    int i;
    int a[10]={0,1,2,3,4,5,6,7,8,9};
    int (*p)[10];
    p = &a;
    for(i=0;i<10;i++)
    {
        printf("%d\n",*(*p+i));
        
    }
    system("pause");
    
}


图3

求问,图1,2问题出在哪,有人能帮我解释一下嘛?实在是搞不懂了,不是等着喂,真的能力尽了。

[此贴子已经被作者于2018-12-17 21:23编辑过]

搜索更多相关主题的帖子: int main i++ system include 
2018-12-17 21:12
木胖子
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2018-12-17
得分:0 
我自己顶一下贴(不允许的话希望版主警告我,新人)!

[此贴子已经被作者于2018-12-17 21:59编辑过]

2018-12-17 21:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492095-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.299333 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved