是否在C中的结构内返回指向char数组的指针?

用户名

我在头文件中有以下结构:

static FILINFO fno;

看起来像这样:

typedef struct {
DWORD   fsize;      /* File size */
WORD    fdate;      /* Last modified date */
WORD    ftime;      /* Last modified time */
BYTE    fattrib;    /* Attribute */
char    fname[13];  /* File name */
} FILINFO;

现在,我希望某个函数返回一个指向fname []的指针,因为该结构是静态定义的,应该可以。这是我的功能:

char* get_open_file_name (void)
{
    return fno.fname;
}

我从主要这样调用此函数:

char* temp;

int main (void)
{
    intialize_sd_card ();
    ...
    ...
    temp = get_open_file_name();

这将导致冲突类型错误消息。但是,如果我尝试这样称呼它:

char* temp = get_open_file_name();

有用。我在这里想念什么?

编辑:这是我从GCC获得的实际错误消息

Severity    Code    Description Project File    Line
Warning     assignment makes integer from pointer without a cast
S.交换被认为是有害的

只是一个疯狂的猜测,但是这样的事情会在这里起作用吗?

#include <stdio.h>

typedef struct {
    char fname[4];
} FILINFO;

static FILINFO fno;

char* temp;

char* get_open_file_name(void) {
    return fno.fname;
}

int main(void) {
    fno.fname[0] = 'L';
    fno.fname[1] = 'o';
    int temp; //my awesome hidden debug value, with regards, previous dev
    fno.fname[2] = 'l';
    fno.fname[3] = '\0';
    if(1 /*or whatever*/) {
        temp = get_open_file_name();
        printf("%s\n", temp);
    }
    return 0;
}

由于局部范围内的可见性规则,该科学怪人可能是合法的-直到将char指针强制转换为整数为止。然后,如果您替换temp = get_open_file_name();char* temp = get_open_file_name();,它将正常工作。

一旦违规的调试值消失,将使用GCC 9.2.0将以下代码完美编译并运行-s -O3 -std=c99 -pedantic -Wall -Wextra

#include <stdio.h>

typedef struct {
    char fname[4];
} FILINFO;

static FILINFO fno;

char* temp;

char* get_open_file_name(void) {
    return fno.fname;
}

int main(void) {
    fno.fname[0] = 'L';
    fno.fname[1] = 'o';
    fno.fname[2] = 'l';
    fno.fname[3] = '\0';
    temp = get_open_file_name();
    printf("%s\n", temp);
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C中的结构内的指针指向的自由数组

来自分类Dev

在C中返回指向结构的指针

来自分类Dev

指向c中匿名结构数组的指针

来自分类Dev

从现有结构数组中查找并返回指向结构的指针

来自分类Dev

返回指向结构体的指针数组的指针

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

从C ++中的函数返回指向数组的指针?

来自分类Dev

在结构指针内指向字符串中的char

来自分类Dev

C#Marhsal函数返回指向结构数组的指针

来自分类Dev

struct 内指向动态结构数组的指针 C

来自分类Dev

如何检查一个指向结构数组的指针在c中是否为空?

来自分类Dev

指向char数组中特定元素的c ++指针返回指定元素之后的所有元素

来自分类Dev

返回指向数组的指针C ++

来自分类Dev

指向C中结构的指针

来自分类Dev

指向C中的前向声明结构数组的指针

来自分类Dev

从指向C中的结构的指针数组获取信息

来自分类Dev

指向结构中数组的C指针传递给函数

来自分类Dev

C * char指向char数组的指针

来自分类Dev

C * char指向char数组的指针

来自分类Dev

在Swift中获取指向C char数组的指针

来自分类Dev

C函数返回指向结构的指针

来自分类Dev

c ++从函数返回指向结构的指针

来自分类Dev

如何在实现XFS的C ++中动态填充结构的指针,该结构是指向数组的指针

来自分类Dev

指向函数中的结构数组的指针

来自分类Dev

指向结构体中数组的指针

来自分类Dev

指向函数中的结构数组的指针

来自分类Dev

创建指向结构的指针数组-C ++

来自分类Dev

如何创建指向结构的指针数组?C ++

来自分类Dev

C - 指向动态结构数组的指针

Related 相关文章

热门标签

归档