int a=10;
int b=5;
int *p;
p=&a;
int *c;
*c=&p; //这里会报错,大神应该看出来了吧
C是一个指针类型,每个指针有自己本身的住址 和 指向某指针地址的值,对吧。
一级指针本身的地址呢
怎样让c指针的值 为 p的地址(不是p的值)?
// c=p 是让c的指针完全和p的指针相等,地址到值
请大神解决
#include
int main() {
int a = 10;
int b = 5;
int *p;
p = &a;
int **c; // 要c存储p的地址,c的类型应当是指针的指针
c = &p; // 然后用一般的对指针赋值的方式就可以了
std::cout << &c << std::endl;
system("pause");
return 0;
}
如下代码所示
#include <iostream>
int main() {
int a = 10;
int b = 5;
int *p;
p = &a;
int **c; // 要c存储p的地址,c的类型应当是指针的指针
c = &p; // 然后用一般的对指针赋值的方式就可以了
std::cout << &c << std::endl;
system("pause");
return 0;
}
以上代码经VS2017测试可用,输出是p指针的地址
c=p就是等于地址了
#include
int main() {
int a = 10;
int b = 5;
int *p;
p = &a;
int **c; // 要c存储p的地址,c的类型应当是指针的指针
c = &p; // 然后用一般的对指针赋值的方式就可以了
std::cout << &c << std::endl;
system("pause");
return 0;
}
楼上说的对
要把c变量定义成二级指针 int **c;
少给自己找麻烦,用那么复杂的,直接C=&p,取P的地址就可以了
#include
void main()
{
int a = 10;
int b = 5;
int *p;
p = &a;
int **c;//看此处
c = &p;//看此处
system("pause");
}
同意c=&p,把他者的地址,指向一样的就好
#include
int main() {
int a = 10;
int b = 5;
int *p;
p = &a;
int **c; // 要c存储p的地址,c的类型应当是指针的指针
c = &p; // 然后用一般的对指针赋值的方式就可以了
std::cout << &c << std::endl;
system("pause");
return 0;
}
你说的那句话的意思是*c这个数被&p赋值,但是*c是个数,而&p是个指针,那么&p就不是int型的,所以报错。你应该把那句话改成"c=&p",这样才不会错。
int a=10;
int b=5;
int *p;
p=&a;
int *c;
c=&p; //这里会报错,大神应该看出来了吧
c在使用之前没有赋值。
*c = &p肯定会报错啊。因为*c相当于给c指向的地址赋值。