我正在尝试将char数组传递给C中的函数。
我的代码如下
void Process(const char expect[])
{
char c0 = expect[0];
char c1 = expect[1];
}
Process("OK");
但是我的调试器告诉我,期望是指向单个字符的指针,这对我没有任何意义。如果我尝试从期望中读取数据(c0和c1变量在做什么),我会得到这个(或具有某种效果的东西)
c0 = "O";
c1 = NULL;
令我进一步困惑的是,我使用相同的语法对参数进行了相似的功能,而没有任何问题。任何帮助将不胜感激-预先感谢。
答案 0 :(得分:1)
简单的答案就是C的工作方式:指针是指向单个项目的指针,并且该指针可以递增以指向下一个项目,依此类推。
此外,数组总是作为指向其第一项的指针传递。尽管它们确实在创建时为它们分配了内存,但是从那时起,它们基本上只是适当类型的指针。
对C中的文本字符串进行特殊处理:每个可见符号在有效的char数组中均显示为char,而零表示字符串的结尾。
答案 1 :(得分:1)
数组传递很简单。数组不会传递-它们的最内层维度会衰减为指针,并且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'
。如果它不在您程序的上下文中,则您必须做错了什么,或者程序中的某些内容未定义。