替代符号*(ptr)[j ++]?

4 c++ arrays pointers

将双指针传递给函数时,我*ptr[j++]在函数中使用了表示程序崩溃的符号.我猜它是由于运算符优先级发生的,所以我通过写作纠正了它,(*ptr)[j++]但我不喜欢这种表示法.感觉很长很混乱.

我也知道这个符号,ptr[0][j++]但我也不喜欢它.有没有更好的符号或方法围绕这一切?

我的代码:

#include <iostream>

using namespace std;

void mset(int **ptr, size_t size);

void main(void)
{
    const size_t size = 10;
    int *ptr = new int[size];
    mset(&ptr, size);
    for (size_t n = 0; n < size; n++) {
        std::cout << ptr[n] << std::endl;
    }
}

void mset(int **ptr, size_t size)
{
    size_t j = 0;
    while(j < size)
        (*ptr)[j++] = 3;
}
Run Code Online (Sandbox Code Playgroud)

PS我知道我可以写void mset(int *ptr, size_t size)和调用mset(ptr, size),但我问的是那个特例.

Pau*_*ans 6

简单地使用额外的间接级别,例如:

auto p = *ptr;
for (size_t j = 0; j < size; ++j)
    p[j] = 3;
Run Code Online (Sandbox Code Playgroud)