c - 在 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;
更让我困惑的是,我已经使用相同的语法对参数进行了类似的功能,这些参数可以正常工作。任何帮助将不胜感激 - 在此先感谢。
解决方案
数组传递很简单。数组不会被传递——它们最内层的维度会衰减为指针,并且 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'
。如果它不在您的程序上下文中,那么您一定做错了什么,或者您的程序中的某些东西必须是未定义的。
推荐阅读
- javascript - Python 无法向 axios 请求发送数据
- javascript - 在纯javascript中查找类似于jQuery的隐藏元素的宽度
- html - 使用右对齐或左对齐时,图像在降价中未对齐
- mysql - MySql 5.7 的 While 循环我的错在哪里?
- kotlin - 带有 id 的房间查询不返回正确的列表 RxJava MVVM 架构
- c# - Avalonia UI 缩放问题
- c# - 在 .NET Core 中显示部分视图时出错
- swift - 更新单独结构中的@AppStorage 后如何更新 SwiftUI 视图
- docker - 如何在命令行中将具有 ENVIRONMENT 变量的额外变量传递给 ansible playbook?
- java - 使用 itext7 突出显示 pdf 文档中的特定单词