gpt4 book ai didi

c - return 从指针生成整数而不进行强制转换

转载 作者:太空宇宙 更新时间:2023-11-04 03:47:19 25 4
gpt4 key购买 nike

我的目标是将 strings_operand_table1[i] 复制到 label 中。然后我想将 label 返回到我之前调用它的函数。我该如何解决这个问题以及有什么更好的方法可以做到这一点?

char GetBaseDeclarationLabel(char *strings_label_table1[], char *strings_mneumonic_table1[],
char *strings_operand_table1[], int hex_address_table1[])
{
int i = 0;
int cmp_str2 = 0;
char label[20] = {0};
//int k = 0;
//printf(" i is %s \n", strings_label_table1[1]);
for(i = 0; i < 503; i++)
{
if(strings_mneumonic_table1[i] != NULL)`enter code here`
{
cmp_str2 = strcmp(strings_mneumonic_table1[i], "BASE");
if(cmp_str2 == 0)
{
//printf(" ??please?? \n");
//printf(" hex_address_table1[i] is %x \n", hex_address_table1[i]);
strcpy(label, strings_operand_table1[i]);
//label = strings_operand_table1[i];
break;
}
}

}
return label;
}

编辑:

这样更好吗?如果我需要使用指针,则使函数无效且不返回任何内容似乎更容易。

void GetBaseDeclarationLabel(char *strings_label_table1[], char *strings_mneumonic_table1[],
char *strings_operand_table1[], int hex_address_table1[], char *label1)
{
int i = 0;
int cmp_str2 = 0;
//char label[20] = {0};
//int k = 0;
//printf(" i is %s \n", strings_label_table1[1]);
for(i = 0; i < 503; i++)
{
if(strings_mneumonic_table1[i] != NULL)
{
cmp_str2 = strcmp(strings_mneumonic_table1[i], "BASE");
if(cmp_str2 == 0)
{
//printf(" ??please?? \n");
//printf(" hex_address_table1[i] is %x \n", hex_address_table1[i]);
//strcpy(label, strings_operand_table1[i]);
label1 = strings_operand_table1[i];
break;
}
}

}
//return label;
}

最佳答案

将函数的返回类型更改为char* 并且不返回本地地址。

或者:

  • malloc() label 的内存:

    char* label = NULL;

    /*... snip ... */
    if(cmp_str2 == 0)
    {
    label = malloc(strlen(strings_operand_table1[i]) + 1);
    if (label)
    {
    strcpy(label, strings_operand_table1[i]);
    }
    break;
    }
  • 或者避免内存分配,只需将 label 指向 strings_operand_table1 中的匹配项。这是可以的,因为 strings_operand_table1 中的条目将存在于函数的范围之外(调用者更容易区分失败的搜索和失败的内存分配):

    char* label = NULL;

    /*... snip ... */
    if(cmp_str2 == 0)
    {
    label = strings_operand_table1[i]);
    break;
    }

关于c - return 从指针生成整数而不进行强制转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23243547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com