相关疑难解决方法(0)

什么是阵列衰减?

什么是阵列的衰变?与数组指针有关系吗?

c c++ arrays pointers

358
推荐指数
8
解决办法
5万
查看次数

函数参数中的数组长度

这是用C计算数组长度的众所周知的代码:

sizeof(array)/sizeof(type)
Run Code Online (Sandbox Code Playgroud)

但我似乎无法找出作为函数参数传递的数组的长度:

#include <stdio.h>

int length(const char* array[]) {
  return sizeof(array)/sizeof(char*);
}

int main() {
  const char* friends[] = { "John", "Jack", "Jim" };
  printf("%d %d", sizeof(friends)/sizeof(char*), length(friends)); // 3 1
}
Run Code Online (Sandbox Code Playgroud)

我假设数组通过值复制到函数参数作为常量指针,并且对它的引用应解决此问题,但此声明无效:

int length(const char**& array);
Run Code Online (Sandbox Code Playgroud)

我发现将数组长度作为第二个参数传递为冗余信息,但为什么标准声明main如下:

int main(int argc, char** argv);
Run Code Online (Sandbox Code Playgroud)

请解释是否可以在函数参数中找出数组长度,如果是,那么为什么存在冗余main.


c pointers

60
推荐指数
2
解决办法
18万
查看次数

这个"数组大小"模板功能如何工作?

可能的重复:
有人可以解释这个给我数组大小的模板代码吗?
函数模板中的魔术参数......

有人可以解释这段代码的工作原理吗 我知道这段代码的目的是获取数组的长度,但我不知道这段代码是如何工作的:

template<typename T, int size>
int GetArrLength(T(&)[size]){return size;}
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ arrays size templates sizeof

47
推荐指数
1
解决办法
4万
查看次数

标签 统计

arrays ×2

c ×2

c++ ×2

pointers ×2

size ×1

sizeof ×1

templates ×1