我只是试图了解各种指针概念,并且我有以下代码:
char** a = new char*; // assign first pointer to point to a char pointer
char b[10] = "bla bla";
*a = new char; //assign second pointer a block of memory. -> This looks wrong to me!!
(**a) = b[2];
那么第二个“指针”内存分配有什么问题?它运行和东西,但它只是感觉不对。
编辑:
感谢您澄清这一点!我学到了一些东西!
答案 0 :(得分:2)
它没有任何问题,除了在C ++中使用动态内存分配相当糟糕的风格。
答案 1 :(得分:2)
char** a = new char*; // a is a pointer to a pointer to a type char. allocate a new pointer variable and make a point to it.
char b[10] = "bla bla"; // define a char array.
*a = new char; // allocate a new char and make the pointer whose address is in a point to it.
(**a) = b[2]; // copy the 3rd char of b to the char whose address is pointed by a.
答案 2 :(得分:1)
*a = new char;
表示使用其默认构造函数创建单个char变量。
它相当于*a = new char();
并且您将刚创建的变量的地址分配给指针a
答案 3 :(得分:1)
它“错误”的唯一原因是它不清楚。你显然同意这一点尚不清楚。
在某些情况下,类似的代码可能是“正确的”,当更好的名称和更好的类结构时,目标是明确的,也消除了对手段的怀疑。
答案 4 :(得分:0)
它在技术上没有任何问题。
但是,在同一代码页上显式分配指向单个元素的指针并不常见。你不会经常在实践中这样做,因为你很少会说“如果你需要了解FooBar,请问汤姆,汤姆就是我。”
答案 5 :(得分:0)