通过指针获取最大数量的元素
Obtaining the maximum number of elements through a pointer
对于数组,我目前这样做是为了获取它们的大小
int A[] = {1,2,3,4,5};
int size =sizeof(A)/sizeof(A[0]) - 1;
现在,当我将此数组传递给例如作为 ptr 的函数时。
void funct(int *p)
{
int size =sizeof(p)/sizeof(p[0]) - 1; //This will not work as p is a pointer
}
关于如何获得 ptr 的最大大小的任何想法?
如果您更改函数的签名,则可以:
template <std::size_t N>
void funct(int (&p)[N])
{
int size = N - 1;
}
但是,只能将此函数模板用于数组。
首先这个表达式
sizeof(A)/sizeof(A[0]) - 1
相对于数组大小的计算无效
/必须有
sizeof(A)/sizeof(A[0])
此外,表达式的类型size_t
所以而不是
int size =sizeof(A)/sizeof(A[0]);
最好将大小定义为具有类型size_t
size_t size =sizeof(A)/sizeof(A[0]);
至于指针,它们不会保留信息,无论它们只指向一个单独的对象还是指向包括数组在内的某个序列的第一个对象。因此,通常接受指针作为参数的函数还定义第二个参数,该参数指定属于指针引用的第一个元素的序列的元素数。
所以你的函数应该声明为
void funct(int *p, size_t n);
排除项是存储字符串的字符数组。在这种情况下,您可以使用标准函数确定数组中存储的字符串中有多少个字符std::strlen
但是,此值与数组的大小不同。
相关文章:
- 在std::集中获取与给定元素最接近的元素
- 找到不大于 A 的最大数的最有效方法,该数可被 B 整除
- C++:最大数组值函数工作不正常
- 在浮点数32中保存浮点数16最大数
- 可能的数组数,使得相邻元素最多有 1 个差异
- 使用 DP 的非相邻元素的最大数组总和
- 找到第 n 个最大数无限循环C++
- 最大数组大小
- C 最大数组大小
- 如何在GPU内存中获取最大数组大小
- 具有最大数组函数的程序
- 是否可以修改c++队列中的下一个元素(最旧的元素)
- 这是在包含非唯一元素的未排序数组中选择第k个最大数的最快算法
- 如何递归地找到最大数组元素的索引
- 使用OpenCV的C++中两个图像的元素最小值
- 递归最大数求和
- 如何找到数组中的最大数并用c++显示
- 给定一系列整数,提供第k个最大数
- 在任意加长的集合中查找最大数不起作用
- IEEE 754浮点数,1<的最大数是多少?