| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 932 人关注过本帖
标题:请教: 关于返回指针数组的指针的问题
只看楼主 加入收藏
东南风
Rank: 1
等 级:新手上路
威 望:1
帖 子:19
专家分:5
注 册:2016-9-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
请教: 关于返回指针数组的指针的问题
请问第2种写法为什么是错误的, 只能用第1种写法吗? 谢谢!
NO.1
程序代码:
#include <stdio.h>
char** name(int *pn)
{
    static char* a[] =
    {
        "Jan","Feb","Mar","Apr","May","Jun","Juy"
    };
    *pn = sizeof(a) / sizeof(a[0]);
    return a;
}

void main()
{
    int pn;
    char** p;
    p = name(&pn);
    while(pn-->0)
        printf("%s\n",*p++ );
}


No.2
程序代码:
#include <stdio.h>
char(*name(int* pn))[]
{
    static char* a[] =
    {
        "Jan","Feb","Mar","Apr","May","Jun","Juy"
    };
    *pn = sizeof(a) / sizeof(a[0]);
    return a;
}

void main()
{
    int pn;
    char (*p)[];
    p = name(&pn);
    while (pn-- > 0)
        printf("%s\n", *p++);
}
搜索更多相关主题的帖子: char 指针 int sizeof name 
2021-05-31 16:53
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
你只能返回数组的地址(或首元素的地址),不能返回一个数组。
因为C/C++中不允许数组复制,免得不小心影响性能。

另外,换个正儿八经的编译器,免得错误的语法也能编译通过
程序代码:
#include <stdio.h>

const char** names( size_t* psize )
{
    static const char* a[] = {
        "Jan","Feb","Mar","Apr","May","Jun","Juy"
    };
    *psize = sizeof(a) / sizeof(a[0]);
    return a;
}

int main( void )
{
    size_t size;
    const char** p = names( &size );
    for( size_t i=0; i!=size; ++i )
        puts( p[i] );
}
2021-05-31 17:06
东南风
Rank: 1
等 级:新手上路
威 望:1
帖 子:19
专家分:5
注 册:2016-9-2
收藏
得分:0 
回复 2楼 rjsp
谢谢, 用的是vs2019
2021-05-31 20:15
快速回复:请教: 关于返回指针数组的指针的问题
数据加载中...
 
   



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

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