首页 > 解决方案 > 在 C 中将 char 数组作为参数传递会变成指针

问题描述

我正在尝试将 char 数组传递给 C 中的函数。

我的代码如下

void Process(const char expect[])
{
    char c0 = expect[0];
    char c1 = expect[1];
}

Process("OK");

然而,我的调试器告诉我,expect 是一个指向单个字符的指针,这对我来说没有任何意义。如果我尝试从期望中读取数据(c0 和 c1 变量在做什么),我会得到这个(或类似的东西)

c0 = "O";
c1 = NULL; 

更让我困惑的是,我已经使用相同的语法对参数进行了类似的功能,这些参数可以正常工作。任何帮助将不胜感激 - 在此先感谢。

标签: cfunctionpointerschararguments

解决方案


数组传递很简单。数组不会被传递——它们最内层的维度会衰减为指针,并且 void Process(char expect[])完全等同于void Process(char *expect).

您的(不完整的)示例中没有任何内容表明它不起作用。

这个

#include <stdio.h>
void Process(char expect[])
{
    char c0 = expect[0];
    char c1 = expect[1];
    printf("'%c' '%c'\n", c0, c1);
}
int main(void) { Process("OK"); }

必须打印'O' 'K'。如果它不在您的程序上下文中,那么您一定做错了什么,或者您的程序中的某些东西必须是未定义的。


推荐阅读