代码:-p = new int *[5];
其中 p 是一个指针并声明为int **P;
请解释一下为什么*
在 new 和 [5] 之间有一个。
问问题
50 次
1 回答
3
使用分配数组new
时需要指定类型。一般模式是:
type* x = new type[n];
其中type
是基本类型,x
是变量,n
是条目数。您可以通过添加*
到两侧使其成为指针类型:
type** x = new type*[n];
您可以无限期地继续此操作:
type**** x = new type***[n];
虽然在实践中你很少会看到这种情况,因为像这样过深的结构只不过是麻烦。
在 C++ 中,凭借其 C 遗产,指针和数组是可互换的,因为这两种定义基本上是等价的:
void f(int* x)
void f(int x[])
在内部,您可以x
用作指针或数组,或两者兼而有之:
int y = x[0];
int z = *x;
同样,这些是相同的:
int y = x[1];
int z = *(x + 1);
x[n]
通常和之间的区别在*(x + n)
很大程度上是无关紧要的,编译器将两者视为相同,并且发出的机器代码是相同的。[]
符号只是一个语法元素,有助于使代码更易于理解。
于 2020-05-15T17:03:46.623 回答