将双指针传递给函数时,我*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),但我问的是那个特例.
简单地使用额外的间接级别,例如:
auto p = *ptr;
for (size_t j = 0; j < size; ++j)
p[j] = 3;
Run Code Online (Sandbox Code Playgroud)