小编Hug*_*tos的帖子

我可以在不用硬编码的情况下确定C++中数组的大小/长度吗?

我基本上寻找一种将数组的大小/长度传递给函数的"动态"方式.


我试过了:

void printArray(int arrayName[])
{
    for(int i = 0 ; i < sizeof(arrayName); ++i)
    {
        cout << arrayName[i] << ' ';
    }
}
Run Code Online (Sandbox Code Playgroud)

但我意识到它只考虑它的字节大小而不是数组上有多少元素.


并且:

void printArray(int *arrayName)
{
    while (*arrayName)
    {
        cout << *arrayName << ' ';
        *arrayName++;    
    }
}
Run Code Online (Sandbox Code Playgroud)

这至少打印了我所有的东西,但超出了我的预期,所以它实际上并不像我想要的那样.我认为这是因为我并没有确切地告诉它我需要它有多大所以它"安全"并且给我一些大的尺寸并最终在我的阵列中的最后一个元素之后开始打印非常奇怪的整数.


所以我终于完成了这项工作,但我相信那里有更好的东西!:

void printArray(int *arrayName)
{
    while (*arrayName)
    {
        if (*arrayName == -858993460)
        {
            break;
        }
        cout << *arrayName << ' ';
        *arrayName++;
    }
    cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)

运行程序几次之后,我意识到我输入的数组的最后一个元素之后的值总是:-858993460,所以一旦遇到这个值,我就把它打破了while循环.


include <iostream>
include <conio.h>

using namespace std;

    // functions …
Run Code Online (Sandbox Code Playgroud)

c++ arrays

3
推荐指数
1
解决办法
5284
查看次数

标签 统计

arrays ×1

c++ ×1