关于地址赋值给指针的问题,求大神

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;
}

图片说明
简单用DEV跑了一下,这个应该是没什么问题的吧?

你说的那句话的意思是*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指向的地址赋值。