C++ 如何创建指针数组并使用**P将其指向NULL?

C++ 如何创建指针数组并使用**P将其指向NULL?,c++,c,arrays,pointers,null-pointer,C++,C,Arrays,Pointers,Null Pointer,如何使用**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 *

如何使用**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>
我已经把这个编码了

#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;
};
#包含//空定义
结构{
浮动a;
字符c;
};
int main(int argc,字符**argv){
s**p=新的s*[10];
p[0]=NULL;
p[5]=NULL;
返回0;
};
在test.cpp中,并按照
g++./test.cpp
执行,未收到任何警告或错误


因此,请提供您试图编译的全部代码和编译器输出。否则很难帮助您。

这将为您提供一个长度为10的S类型指针数组,所有指针都包含null。我会养成使用nullptr的习惯。NULL是int类型的0,其中nullptr是void*(void指针)类型的0


两者都是相同的,或者我们可以将其编码为p=news*[10];或p=新的(s*[10]);那么警告是什么?@timaru没有错误消息。这会给出一条警告消息,这样做是非法的,从这个意义上说,如果我们按照上面的编码,那么它就不能被设置为NULL。这可能是因为指向指针的指针不能设为NULL。我不需要所有元素来设为零或NULL。我只需要其中的一些元素,而且它会在我的电脑上产生编译错误。您看到了什么警告?语句对指针设为NULL的行没有影响。别忘了标记一个答案…根据上下文,没有一个答案是正确的根据我的要求……@sonu我得到了您给我的代码,当您试图将deque的结果传递给inque时出现问题,因为您已经标记inque以获取指针的引用,并且您只能从左值进行引用,但deque返回右值,所以请将inque参数类型从dary*&更改为dary*。但是你的代码很难阅读,我不明白你的问题是如何与你在上面的评论中提供的代码联系在一起的。好吧,忘掉那句话,检查板条箱函数的语句。在这里,我使用new创建了点cptr,并使用for循环将它们全部设置为NULL。在for循环中,将其设为NULL没有任何效果。@只需使用修改的inque参数尝试此上载的新版本。在像code:blocks这样的旧编译器中,cfree不支持nullptr。很抱歉,我认为这是标准。
#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;
};
struct S
{
    float  a ;
    char x ;
};

int main()
{
    S** p = new S*[10];

    for(int i = 0; i < 10; i++)
    {
        p[i] = nullptr;
    }
}
void setValue(int value);

void setValue(int* pointer);