鱼C论坛

 找回密码
 立即注册
查看: 1061|回复: 5

[已解决]萌新关于数组指针的一个问题

[复制链接]
发表于 2021-12-29 17:08:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<stdio.h>
int main()
{
       
         int a[3][12][1][3] = {
                {{2014,1,0},{2014,2,0},{2014,3,0},{2014,4,0},{2014,5,0},{2014,6,0},{2014,7,0},{2014,8,31.3},{2014,9,35.5} ,{2014,10,58.7},{2014,11,49.6},{2014,12,55.5}
                },
                {
         {2015,1,59.8},{2015,2,54.9},{2015,3,33.1},{2015,4,38.2},{2015,5,26.6},{2015,6,20.5},{2015,7,27.8},{2015,8,38.5},{2015,9,41.5} ,{2015,10,44.7},{2015,11,38.1},{2015,12,41.5}
         },
                {
         {2016,1,34.9},{2016,2,36.4},{2016,3,47.5},{2016,4,37.9},{2016,5,30.6},{2016,6,23.4},{2016,7,26.6},{2016,8,34.3},{2016,9,0} ,{2014,10,0},{2014,11,0},{2014,12,0}
         }
        };
     int (*p)[3] = a;
       
         return 0;
}

想问下大佬们指针p怎样才能指向{2014,1,0}这个数组的起始地址 非常感谢!
最佳答案
2021-12-29 17:49:39
本帖最后由 傻眼貓咪 于 2021-12-29 17:51 编辑

#include <stdio.h>

int main(){
    
    /* 稍微作修改 */
    float a[3][12][3] =
    {
        {
            {2014, 1, 0}, {2014, 2, 0}, {2014, 3, 0}, {2014, 4, 0}, {2014, 5, 0}, {2014, 6, 0},
            {2014, 7, 0}, {2014, 8, 31.3}, {2014, 9, 35.5}, {2014, 10, 58.7}, {2014, 11, 49.6}, {2014, 12, 55.5}
        },
        {
            {2015, 1, 59.8}, {2015, 2, 54.9}, {2015, 3, 33.1}, {2015, 4, 38.2}, {2015, 5, 26.6}, {2015, 6, 20.5},
            {2015, 7, 27.8}, {2015, 8, 38.5}, {2015, 9, 41.5}, {2015, 10, 44.7}, {2015, 11, 38.1}, {2015, 12, 41.5}
        },
        {
            {2016, 1, 34.9}, {2016, 2, 36.4}, {2016, 3, 47.5}, {2016, 4, 37.9}, {2016, 5, 30.6}, {2016, 6, 23.4},
            {2016, 7, 26.6}, {2016, 8, 34.3}, {2016, 9, 0}, {2014, 10, 0}, {2014, 11, 0}, {2014, 12, 0}
        }
    };
    
    float (*p)[3][12][3] = &a;
    
    printf("%.1f\n", ****p); // a[0][0][0]
    printf("%.1f", *(*(*(*p+1)+8)+2)); // a[1][8][2]
    
    return 0;
}
2014.0
41.5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-12-29 17:24:34 | 显示全部楼层
int *p = a;   不知道是不是,以我理解数组是起始地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-29 17:28:29 | 显示全部楼层
这个多维数组看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-29 17:49:39 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 2021-12-29 17:51 编辑

#include <stdio.h>

int main(){
    
    /* 稍微作修改 */
    float a[3][12][3] =
    {
        {
            {2014, 1, 0}, {2014, 2, 0}, {2014, 3, 0}, {2014, 4, 0}, {2014, 5, 0}, {2014, 6, 0},
            {2014, 7, 0}, {2014, 8, 31.3}, {2014, 9, 35.5}, {2014, 10, 58.7}, {2014, 11, 49.6}, {2014, 12, 55.5}
        },
        {
            {2015, 1, 59.8}, {2015, 2, 54.9}, {2015, 3, 33.1}, {2015, 4, 38.2}, {2015, 5, 26.6}, {2015, 6, 20.5},
            {2015, 7, 27.8}, {2015, 8, 38.5}, {2015, 9, 41.5}, {2015, 10, 44.7}, {2015, 11, 38.1}, {2015, 12, 41.5}
        },
        {
            {2016, 1, 34.9}, {2016, 2, 36.4}, {2016, 3, 47.5}, {2016, 4, 37.9}, {2016, 5, 30.6}, {2016, 6, 23.4},
            {2016, 7, 26.6}, {2016, 8, 34.3}, {2016, 9, 0}, {2014, 10, 0}, {2014, 11, 0}, {2014, 12, 0}
        }
    };
    
    float (*p)[3][12][3] = &a;
    
    printf("%.1f\n", ****p); // a[0][0][0]
    printf("%.1f", *(*(*(*p+1)+8)+2)); // a[1][8][2]
    
    return 0;
}
2014.0
41.5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-29 18:16:13 | 显示全部楼层
a327904410 发表于 2021-12-29 17:28
这个多维数组看不懂

我也被多维数组搞糊了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-29 18:17:02 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-9 01:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表