C++ 将一个指针复制到C+中的另一个指针+; #包括 使用名称空间std; int main(int argc,字符**argv){ INTA=5; int*p,*q; *p=a; *q=*p;//第6行 cout
是的,这些都是悬而未决的指针,您正在遇到未定义的行为 无法取消引用指向您不拥有的内存的指针:C++ 将一个指针复制到C+中的另一个指针+; #包括 使用名称空间std; int main(int argc,字符**argv){ INTA=5; int*p,*q; *p=a; *q=*p;//第6行 cout,c++,pointers,C++,Pointers,是的,这些都是悬而未决的指针,您正在遇到未定义的行为 无法取消引用指向您不拥有的内存的指针: #include <iostream> using namespace std; int main(int argc, char **argv) { int a=5; int *p,*q; *p = a; *q = *p; //line 6 cout<<*p<<p<<*q<<q; re
#include <iostream>
using namespace std;
int main(int argc, char **argv) {
int a=5;
int *p,*q;
*p = a;
*q = *p; //line 6
cout<<*p<<p<<*q<<q;
return 0;
}
正确的版本是:
int* p;
*p; //illegal
int* x = NULL;
*x; //illegal
int* y = new int;
*y; //OK!
int main(int argc,char**argv){
INTA=5;
int*p=新的int;
int*q=新的int;
*p=a;
*q=*p;//第6行
cout第5行中也有一个问题。您声明了指针,但没有让它们指向任何东西,这不会自动发生。而且取消对未初始化指针的引用,就像您这样做,很可能会使程序崩溃
这样比较好
int main(int argc, char **argv) {
int a=5;
int p,q;
p = a;
q = p; //line 6
cout<<p<<p<<q<<q;
return 0;
}
int main(int argc,char**argv){
INTA=5;
int b,c;
int*p,*q;
p=&b;//使p指向b
q=&c;//将q点指向c
*p=a;
*q=*p;//第6行
cout您拥有的代码假设当
没有
这就是你想做的吗
int main(int argc, char **argv) {
int a=5;
int b, c;
int *p,*q;
p = &b; // make p point at b
q = &c; // make q point at c
*p = a;
*q = *p; //line 6
cout<<*p<<p<<*q<<q;
return 0;
}
inta=5;
int*p,*q;
p=&a;
q=p;//第6行
cout可以使用另一个变量复制两个指针,如下所示
int a=5;
int *p,*q;
p = &a;
q = p; //line 6
cout<<(*p)<<p<<(*q)<<q;
#包括
使用名称空间std;
int main()
{
int*p,*q;
INTA=5;
p=&a;
q=&(*p);
a=10;
C++:C++在C++中不使用原始指针,C和C++是两种不同的语言,没有语言称为“C/C++”。你的代码很明显是C++的。@ MihaiTodor有很多情况下“原始”指针是正确的,很多应用程序都是不正确的。这个人显然是在尝试学习正确的做事方法。@苏珊我倾向于听Marshall Cline:如果你真的想了解原始指针,也许H。E/她应该坚持简单的C构造。否则,C++中的好方法会导致大量的坏例子。p持有A的地址,Q是否持有一个?@ UsR1139048 P的地址,它不包含地址A中的地址(用新的分配)。,它复制了a的值。如果我做*p=a,它不是保存了a的地址吗?所以我通过做*q=*p来问,q???@user1139048的地址是什么?第一个问题,不是。它保存了地址p
指向的a
的值(这是new
返回的地址).second-q不更改其地址,但更改其值。*q
是值,q
是地址。如果您更改了q=&a
,则它将具有a
的地址。我更正了看起来是复制粘贴错误的内容。您正在删除a的地址(从堆栈中)在你的第二个正确的例子中,实际上我想通过做*p=*q来知道q所持有的地址是什么?q可以持有你想要的任何地址-在上面的例子中,q将持有与p相同的地址,但当我打印p和q时,两者都不同,这意味着它们不持有相同的地址。
int main(int argc, char **argv) {
int a=5;
int b, c;
int *p,*q;
p = &b; // make p point at b
q = &c; // make q point at c
*p = a;
*q = *p; //line 6
cout<<*p<<p<<*q<<q;
return 0;
}
int a=5;
int *p,*q;
p = &a;
q = p; //line 6
cout<<(*p)<<p<<(*q)<<q;
#include<iostream>
using namespace std;
int main()
{
int *p,*q;
int a = 5;
p = &a;
q = &(*p);
a = 10;
std::cout<<*p<<std::endl;
std::cout<<*q<<std::endl;
}
int a = 5;
int& p = a;
int& q = p;
std::cout<<p<<std::endl;
std::cout<<q<<std::endl;
std::cout<<&p<<std::endl;
std::cout<<&q<<std::endl;