c++ 地址和指针地址的区别是什么?

8mmmxcuj  于 2022-12-20  发布在  其他
关注(0)|答案(4)|浏览(136)

普通指针地址和指针的“地址”有什么区别?

#include<iostream>

using namespace std;

int main()
{
    int * a= new int[1];
    cout<<a<<endl;
    cout<<&a<<endl;
    return 0;
}

这将打印两个不同的值:

0x8b1a438
0xffbb6b8c
w9apscun

w9apscun1#

一张照片通常胜过千言万语:

+------------+
0x08b1a438 |         42 | int[1]
           +------------+
                  ^
                  |
                  |
           +------|-----+
0xffbb6b8c | 0x08b1a438 | int * a
           +------------+

如您所见,打印a会打印a的内容,而打印&a则会打印其地址。

pod7payv

pod7payv2#

这将打印出a的值,即它所指向的地址:

cout << a <<endl;

这会打印出a本身的地址:

cout<< &a <<endl;

这与其他内置类型的情况类似,例如,

int b = 42;
cout << b << endl;  // prints the value of b, i.e. 42
cout << &b << endl; // prints the address of b

指针的值恰好是另一个对象的地址,ab的值都可以改变,但它们的地址不能改变。

a = &b; // modify value of a: now it points to b.
b = 99; // modify the value of b: now it is 99.
z9smfwbn

z9smfwbn3#

#include<stdio.h>
int main()
{
    int a = 10, ptr;
    ptr = &a;  //its check the address using(&)operator
    printf("the value of *p%d\n", *ptr); 
    printf("the value of a:%d\n", a);
    printf("the address of ptr=>%p\n", ptr);
    printf("the address of &ptr=>%p\n", &ptr);
    printf("the address of a=>%p\n", &a); 
}
output:
   ./a.out 
   the value of *p10
   the value of a:10
   the address of ptr=>0x7fff62db082c
   the address of &ptr=>0x7fff62db0830
   the address of a=>0x7fff62db082c

**i anwswerd in c its easy to understand**
xvw2m8pv

xvw2m8pv4#

a为指针变量,包含整数的地址。
&a是指针变量本身的地址,即它是保存整数地址的地址。

相关问题