int* a= b; a=& b; b=& a; a是啥?

发布网友 发布时间:2024-10-23 22:58

我来回答

2个回答

热心网友 时间:2024-10-27 23:41

这是典型的c语言指针题

int *a表示定义了一个int型的指针

*a=b表示指针a指向b,即把b赋值给*a;

&是取地址符,&b代表b在内存中的地址,*a=&b表示把b的地址赋值给*a。

利用编译器编译该代码:

结果为:

拓展资料

*和&运算

(*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值。(&p)则是这样一种运算,返回当时声明p 时开辟的地址。显然可以用赋值语句对内存地址赋值。我们假设有这么两段内存地址空间,他们取值如下:(单位:H,16 进制)

假设有这么一段代码:(假设开辟空间时p 被分配给了3001H、3002H 两个位置)

int *p;

p=2003H;

*p=3000H

**p的值为多少?

**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。

那么&&p、*(&p)和&(*p)又等于多少?

&&p=&(&(p))=&(3001H),此时出错了,3001H 是个常数怎么可能有地址呢?

*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。

资料来自于:百度百科:指针



热心网友 时间:2024-10-27 23:39

根据你给出的代码和赋值语句,可以分析出以下情况:

int* a = b;:这行代码将指针变量a指向了b所指向的内存地址。换句话说,a和b指向同一个内存地址。

a = &b;:这行代码将指针变量a的值修改为b的内存地址。现在a指向了b的内存地址。

b = &a;:这行代码将指针变量b的值修改为a的内存地址。现在b指向了a的内存地址。

综上所述,根据这段代码的执行结果,a指向了b的内存地址,而b指向了a的内存地址。因此,a和b都指向了彼此的内存地址,形成了一个循环引用的情况。这种情况可能会导致内存泄漏和程序错误,应该避免出现这样的指针赋值。

热心网友 时间:2024-10-27 23:37

这是典型的c语言指针题

int *a表示定义了一个int型的指针

*a=b表示指针a指向b,即把b赋值给*a;

&是取地址符,&b代表b在内存中的地址,*a=&b表示把b的地址赋值给*a。

利用编译器编译该代码:

结果为:

拓展资料

*和&运算

(*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值。(&p)则是这样一种运算,返回当时声明p 时开辟的地址。显然可以用赋值语句对内存地址赋值。我们假设有这么两段内存地址空间,他们取值如下:(单位:H,16 进制)

假设有这么一段代码:(假设开辟空间时p 被分配给了3001H、3002H 两个位置)

int *p;

p=2003H;

*p=3000H

**p的值为多少?

**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。

那么&&p、*(&p)和&(*p)又等于多少?

&&p=&(&(p))=&(3001H),此时出错了,3001H 是个常数怎么可能有地址呢?

*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。

资料来自于:百度百科:指针



热心网友 时间:2024-10-27 23:42

根据你给出的代码和赋值语句,可以分析出以下情况:

int* a = b;:这行代码将指针变量a指向了b所指向的内存地址。换句话说,a和b指向同一个内存地址。

a = &b;:这行代码将指针变量a的值修改为b的内存地址。现在a指向了b的内存地址。

b = &a;:这行代码将指针变量b的值修改为a的内存地址。现在b指向了a的内存地址。

综上所述,根据这段代码的执行结果,a指向了b的内存地址,而b指向了a的内存地址。因此,a和b都指向了彼此的内存地址,形成了一个循环引用的情况。这种情况可能会导致内存泄漏和程序错误,应该避免出现这样的指针赋值。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com