首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将二维数组转换为指针

将二维数组转换为指针
EN

Stack Overflow用户
提问于 2015-12-21 19:27:53
回答 2查看 55关注 0票数 1

我定义了一个我称之为Neuron的结构。

在我的主目录中,我创建了一个二维数组:

代码语言:javascript
复制
 Neuron N_network[4][10]; //create a neural network

我有一个函数来打印结构元素:

代码语言:javascript
复制
void print_stat_neuron(Neuron * neuron_info)

我应该写什么来打印N_network[i][j] (作为print_stat_neuron()函数的一个参数)?我简单地尝试使用&(N_network[i][j]),并得到一条错误消息。

我有编译器gcc -Wall -Wextra的合并错误消息:

代码语言:javascript
复制
2ex4.c: In function 'init_network':
2ex4.c:168:2: warning: implicit declaration of function'print_stat_neuron' [-Wimplicit-function-declaration]
print_stat_neuron(&N_network[4][1]);
^
2ex4.c: At top level:
2ex4.c:191:6: warning: conflicting types for 'print_stat_neuron' [enabled by default]
void print_stat_neuron(Neuron * neuron_info)
  ^
2ex4.c:168:2: note: previous implicit declaration of 'print_stat_neuron' was here
 print_stat_neuron(&N_network[4][1]);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-21 19:31:50

您需要将参数更改为Neuron (*neuron_info)[10]。现在,您可以将此函数称为

代码语言:javascript
复制
print_stat_neuron(N_network);  

代码语言:javascript
复制
print_stat_neuron(&N_network[0]);    
票数 3
EN

Stack Overflow用户

发布于 2015-12-21 19:46:56

您显示的错误消息来自在使用函数之前不声明该函数,因此编译器将为该函数推导一个类型(extern int print_stat_neuron();没有指定参数的数量或类型),然后使用返回类型void对其进行定义。注意,在C中,extern int print_stat_neuron();不是没有参数的函数的原型;它是extern int print_stat_neuron(void);

这段代码编译得很干净:

代码语言:javascript
复制
typedef struct Neuron
{
    int x;
} Neuron;

void print_stat_neuron(Neuron *neuron_info);

int main(void)
{
    Neuron N_network[4][10];
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 10; j++)
            print_stat_neuron(&N_network[i][j]);
    }
    return 0;
}

这会在使用之前声明函数。在使用之前定义函数也是可以接受的(这样可以节省单独的声明)。当然,如果函数将在定义它的源文件之外使用,那么它应该在头文件中有一个声明,并且在定义和使用它的地方都应该使用标头。如果函数不在定义源文件的源文件之外使用,则应该是static

在MacOSX10.10.5上使用GCC 5.3.0检查干净的编译(不幸的是,我的El Capitan机器正在保修中):

代码语言:javascript
复制
$ gcc -std=c11 -O3 -g -Wall -Wextra -Werror -Wmissing-prototypes -Wstrict-prototypes \
>     -Wold-style-definition -c neuron.c
$
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34402954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档