c - 在将数组传递给函数时,要求编译器将数组视为数组(而不是指针)
问题描述
我想sizeof
在将数组传递给函数后使用运算符,但 C 语言将其视为指针而不是数组。
我们可以实现一个功能来解决这个目的吗?
void foo(char array[])
{
printf("sizeof array = %u\n", sizeof(array)); /* I know array is pointer here */
}
int main(void)
{
int array[5];
foo(array);
}
解决方案
不可能,并且使用数组下标[]
可能会让不知道它将表现为指针的人感到困惑。我采用的方法是将长度作为另一个参数传递或创建一个带有指针和长度的结构:
struct {
char * buffer;
size_t length;
} buffer_t;
我不喜欢 struct 或 typedef 方法中的数组,因为它将数据限制为固定大小。
推荐阅读
- c# - 通过代码从 Nhibernate 映射中的单个类 Map 生成多个物理表
- android - com.android.shell was not granted this permission: android.permission.WRITE_SETTINGS
- javascript - 如何根据目录中的视频制作自动填充的视频库?
- html - HTML form- check boxes programmatically
- spring-data-mongodb - Excluding bad data models during query
- r - How to request Xero API in R programming language?
- javascript - 返回第 n 个
- php - ErrorException 为 foreach() 提供的参数无效
- mysql - 如何对具有与另一个名称表相关的两列外键的表执行 mysql 选择查询
- perl - Perl脚本配对两个数组