如何使用** P创建一个指针数组并将其指向NULL?
假设我编码如下。
struct s
{
float a ;
char x ;
} ;
s **p ;
p = new ( s * [10] ) ;
现在我想把它们中的一些作为NULL
p[0] = NULL ;
p[5] = NULL ;
如果我只是如上编码那么它会给我一个警告,而且上面的方法在如何使变量为NULL时也是错误的。那我该怎么做呢?
答案 0 :(得分:0)
如果你需要对数组的元素进行零初始化,你可以编写
p = new s * [10] {};
答案 1 :(得分:0)
应该是
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;
答案 2 :(得分: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
进行了编译,没有任何警告或错误。
因此,请提供您尝试编译的完整代码和编译器输出。否则很难帮助你。
答案 3 :(得分:0)
这应该给你一个长度为10的S型指针数组,都包含null。我会进入使用nullptr的习惯。 NULL为int类型的0,其中nullptr为0 *类型为void *(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);