c++ - 在局部函数中分配和初始化指针

标签 c++ pointers char

我想分配内存并将其填充到指针,这是函数参数之一,但我认为我没有得到一些重要的东西,请帮助我。

所以,如果我这样做,一切正常:

void alloc(char **p, int n)
{
*p = new char[n];
}

int main() {
char * ptr = NULL;
int n = 10;
alloc(&ptr, n);
for(int i = 0; i<(n - 1); i++)
    ptr[i] = '1';
ptr[n - 1] = '\0';

printf("%s", ptr);
return 0;
}

现在我想把分配的内存也初始化到函数中

void alloc(char **p, int n)
{
*p = new char[n];
for(int i = 0; i<(n - 1); i++)
    *p[i] = '1';
*p[n - 1] = '\0';
} 

int main() {
char * ptr = NULL;
int n = 10;
alloc(&ptr, n); 
printf("%s", ptr);
return 0;
}

程序崩溃。我不明白为什么。请问有人可以解释一下吗?

最佳答案

请尝试使用 (*p)[i](*p)[n - 1]。优先规则导致 *p[i] 被评估为 *(p[i])

关于c++ - 在局部函数中分配和初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7527293/

相关文章:

C++ : interpreting hex in a char* as uint8_t

javascript - 如何使用 mfc/c++ 在 chrome 或 firefox 中注入(inject)脚本

c++ - 数组 pie 的大小有非整数类型 'double' 错误,

c++ - OMNeT++:对 `typeinfo for inet::IMobility' 的 undefined reference

c - 使用 scanf 定义 malloc 数组大小并初始化

c++ - cpp char float 不工作

C++ - 遍历 map 的 map

c - 在函数中交换两个数组的指针

c - 头指针指向指针

C - 从 .txt 文件读取并将字符存储在数组中