Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指针声明_C++_Pointers_Declaration - Fatal编程技术网

C++ 指针声明

C++ 指针声明,c++,pointers,declaration,C++,Pointers,Declaration,如果您要声明一些类似这样的指针: int n, *p1, *p2; double *p3; 我们能确定p1=p2吗 我的理解是,所有这些代码告诉我们,*p1和*p2是指向int的指针,而p1和p2将是int 编辑: 这是一本C++的书,问题是:< /P> 将以下陈述标记为真(正确)或假(不正确): (a) p1=p2 是的,只要写p1==p2来确定p1=p2 p1和p2将不是整数。它们是指针,尽管在某些环境中它可能被实现为整数。是的,只需写入p1==p2即可确定p1=p2 p1和p2将不是整数

如果您要声明一些类似这样的指针:

int n, *p1, *p2;
double *p3;
我们能确定p1=p2吗

我的理解是,所有这些代码告诉我们,*p1和*p2是指向int的指针,而p1和p2将是int

编辑: 这是一本C++的书,问题是:< /P> 将以下陈述标记为真(正确)或假(不正确):


(a) p1=p2

是的,只要写
p1==p2
来确定p1=p2


p1
p2
将不是整数。它们是指针,尽管在某些环境中它可能被实现为整数。

是的,只需写入
p1==p2
即可确定p1=p2


p1
p2
将不是整数。它们是指针,尽管在某些环境中可以作为整数实现。

p1
p2
并不是真正意义上的整数。它们指向/包含内存中可能包含整数的位置地址。

p1
p2
不是真正的整数。它们指向/包含内存中可能包含整数的位置地址。

p1
p2
是指向整数的指针。
*p1
*p2
在代码中使用时,将获得p1和p2指向的值。您可以使用
p1==p2
测试指针是否相同,并使用
*p1==p2
测试指针指向的值是否相同
p1
p2
是指向int的指针。
*p1
*p2
在代码中使用时,将获得p1和p2指向的值。您可以使用
p1==p2
测试指针是否相同,并使用
*p1==p2
测试指针指向的值是否相同。如果p1==p2,*p1===p2也是正确的,如果p1==p2,那么同样正确的是,*p1==p2

您得到了相反的结果

int *p1, *p2;
p1和p2是指针 及 *p1和*p2将是整数

现在说

*p1 = 35;
*p2 = 35;
存储器位置p1和p2处的值相等。p1不必等于p2

另一方面

int *p1 = 0, *p2=0;
int a = 75;
p1 = &a;
p2 = p1;

现在p1和p2都包含
a
的地址,因此p1等于p2

你的情况正好相反

int *p1, *p2;
p1和p2是指针 及 *p1和*p2将是整数

现在说

*p1 = 35;
*p2 = 35;
存储器位置p1和p2处的值相等。p1不必等于p2

另一方面

int *p1 = 0, *p2=0;
int a = 75;
p1 = &a;
p2 = p1;

现在p1和p2都包含
a
的地址,因此p1等于p2

p1和p2不是int,它们的内存与int相同,但它们拥有一个可以存储int的地址。p1=p2始终为真。您确定上面说的是
p1=p2
(与
p1==p2
)相反吗?如果是这样,那么你就不是在“确定”p1=p2的任何东西。我假设他们使用“=”代替“等于”,而不是赋值运算符。除非初始化了
p1
p2
,否则无法判断p1是否等于
p2
。p1和p2不是整数,它们与int具有相同的内存,但它们拥有一个可以存储int的地址。p1=p2始终为真。您确定它说的是
p1=p2
(与
p1==p2
)相反吗?如果是这样,那么你就不是在“确定”p1=p2的任何东西。我假设他们使用“=”代替“equals”,而不是赋值运算符。除非初始化了
p1
p2
,否则无法判断p1是否等于p2。第二条语句可能是未定义的行为(例如,如果两者都是空指针)否,它仍然是真的。未定义的行为既不是真的也不是假的第二个语句可能是未定义的行为(例如,如果两者都是空指针)不,它仍然是真的。未定义的行为既不是真的也不是假的