如何使用 **P 创建一个指针数组并将其指向 NULL?
假设我编码如下。
struct s
{
float a ;
char x ;
} ;
s **p ;
p = new ( s * [10] ) ;
现在我想将其中一些设为 NULL
p[0] = NULL ;
p[5] = NULL ;
如果我只是像上面那样编码,那么它会给我一个警告,而且上面的方法在如何使变量为 NULL 方面也是错误的。那么我该怎么做呢?
如何使用 **P 创建一个指针数组并将其指向 NULL?
假设我编码如下。
struct s
{
float a ;
char x ;
} ;
s **p ;
p = new ( s * [10] ) ;
现在我想将其中一些设为 NULL
p[0] = NULL ;
p[5] = NULL ;
如果我只是像上面那样编码,那么它会给我一个警告,而且上面的方法在如何使变量为 NULL 方面也是错误的。那么我该怎么做呢?
如果您需要将数组的元素初始化为零,您可以编写
p = new s * [10] {};
它应该是
p = new s*[10];
p[0] = NULL;
p[5] = NULL;
如果错误类似于
error: ‘NULL’ was not declared in this scope
那么,要么
#include <cstdlib>
一开始,或
p[0] = 0;
p[5] = 0;
我已经编码了这个
#include<cstdlib> //NULL definition
struct s{
float a;
char c;
};
int main (int argc, char **argv){
s **p = new s*[10];
p[0] = NULL;
p[5] = NULL;
return 0;
};
在 test.cpp 中并遵守它g++ ./test.cpp
并没有收到警告或错误。
因此,请提供您尝试编译的整个代码和编译器输出。否则很难帮你。
这应该为您提供一个长度为 10 的 S 类型指针数组,全部包含 null。我会养成使用 nullptr 的习惯。NULL 是 int 类型的 0,其中 nullptr 是 void* 类型的 0(void 指针)
struct S
{
float a ;
char x ;
};
int main()
{
S** p = new S*[10];
for(int i = 0; i < 10; i++)
{
p[i] = nullptr;
}
}
在 C++ 11 中添加了 nullptr,以便编译器知道调用这两个函数之间的区别。
void setValue(int value);
void setValue(int* pointer);