i和&i的分别

kwany 2003-08-21 01:17:33
请问以下代码中的i和&i 有什么分别?
各有什么用途?
#include "iostream.h"

void main(){
int no = 10;
int *i = &no;
cout << i <<endl;
cout << &i<<endl;
}

谢谢!!
...全文
73 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
fixopen 2003-08-21
  • 打赏
  • 举报
回复
不明白楼主想知道什么?
&varname表示取得varname这个变量的地址(由于所有的变量都在内存中,所以都可以取得他们的内存位置,也就是地址),当然了,这个变量本身是个指针也无所谓。
这个地址一般放在指针变量里,该指针变量的类型就是varname的类型的指针,假设varname的类型是T,那么,这个指针变量的类型是T*。
cccloveyf 2003-08-21
  • 打赏
  • 举报
回复
引用楼主的话:
那为什幺要*p=i才是对,而*p = &i不对。*p不是要=值的地址吗?

回答:
如果是定义的同时初始化,用int *p=i这种形式,
如果是定义和初始化分离的,用int *p;p=&i;这种形式.

#include "iostream.h"

void main(){
int no = 10;
int *i = &no;
cout << i <<endl;
cout << &i<<endl;
}
i的值是no的地址,*i就是no的值,&i是i的地址.
liutaoxwl 2003-08-21
  • 打赏
  • 举报
回复
在指针变量初始化时,就是这样的
int no=10;
int *i=no;
这样,可以
int *j;
j=&no;
chon81 2003-08-21
  • 打赏
  • 举报
回复
i是变量.
&i是i变量在内存中的地址
ding198116 2003-08-21
  • 打赏
  • 举报
回复
#include "iostream.h"

void main(){
int no = 10;
int *i = &no;
int *p = i;
cout << *p; //输出10
}

int *i = &no; //定义语句:*在此处作定义指针变量用,而非间接引用,将no的地址传给i,i拥有了no的地址,即*i为no的值,
int *p = i; //因为no的地址存放在i中,i即表示no的地址,是将no的地址传给*p,而不是int *p = &i;这样是把指针i在内存中的地址给了p这样是不允许的。所以*p输出10
jack_wq 2003-08-21
  • 打赏
  • 举报
回复
那为什幺要*p=i才是对,而*p = &i不对。*p不是要=值的地址吗?
*p存储的是变量的值,p是变量的地址
楼主明白了吗?
hillyee 2003-08-21
  • 打赏
  • 举报
回复
cout <<i 又不是10,为什么说是i的值呢?!
这里是指输出i指向的那个变量的地址。该变量的地址也就是i的值。


int *p = i;
相当于 int *p; p=i;
也就是是p和i同时指向一个地址。 int *i = &no; i=&no; 就有p=&no。

cout << *p; 也就相当于*p=no,cout << no; no=10. 输出10。
jscsqb 2003-08-21
  • 打赏
  • 举报
回复
i是一个指针,指向的是变量no;也就是i所指向的内存单元存放的是变量no;
i本身也是一个值,这个值就放在&i这个内存单元中;
ShiChao 2003-08-21
  • 打赏
  • 举报
回复
void main(){
int no = 10;
int *i = &no;
cout << i <<endl; // 输出i指向的地址,也就是&no
cout << &i<<endl; // 输出i自己的地址
}
WhatCanIdoing 2003-08-21
  • 打赏
  • 举报
回复
那为什幺要*p=i才是对,而*p = &i不对。*p不是要=值的地址吗?

因为i存储的已经是地址了. &i是i在内存中的地址,不是i存储(指向)的地址
WhatCanIdoing 2003-08-21
  • 打赏
  • 举报
回复
i 就是no 在内存中的地址;

&i 就是i的在内存中的地址
kwany 2003-08-21
  • 打赏
  • 举报
回复
还是不太明白~~
cout <<*i; //输出10
cout <<i; //输出一个地址
cout <<&i; //输出另一个地址

cout <<i 又不是10,为什么说是i的值呢?!不明白!!
====================================================
還有
#include "iostream.h"

void main(){
int no = 10;
int *i = &no;
int *p = i;
cout << *p; //输出10
}
那为什幺要*p=i才是对,而*p = &i不对。*p不是要=值的地址吗?


谢谢!!
oopig 2003-08-21
  • 打赏
  • 举报
回复
&i是获取i这个变量的地址,i就是获取这个变量的值。
这些都是非常基本的知识。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧