首页 > 解决方案 > 如何正确地将 char * const[256] 转换为 const char * const*

问题描述

我有这个结构:

typedef struct cmdLine {
char * const arguments[256];
} cmdLine;

我也有一个说法cmdLine *pCmdLine。我想用execv所以我写execv((pCmdLine->arguments[0]), pCmdLine->arguments);。第二个参数不正确execv,我想问一下如何正确转换它。

我得到的警告是:将'char* const[256]'' 传递给 'const char *const *' 类型的参数会丢弃嵌套指针类型中的限定符。我会撒谎寻求一些帮助以正确转换它,谢谢。

标签: cpointerscastingconstantsexecv

解决方案


我没有看到任何问题:

#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>

#include <stdio.h>

struct
{
char * const arr[20];
}*str;

void foo(char  *const par[])
{
    volatile const char * const ptr = par[4]; 
    printf("%s\n", par[7]);
    printf("%s\n", ptr);
}


void foo1()
{
    foo(str -> arr);
}

https://godbolt.org/z/4Sv4a8


推荐阅读