社区
C语言
帖子详情
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;
}
谢谢!!
...全文
123
13
打赏
收藏
i和&i的分别
请问以下代码中的i和&i 有什么分别? 各有什么用途? #include "iostream.h" void main(){ int no = 10; int *i = &no; cout << i <<endl; cout << &i<<endl; } 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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就是获取这个变量的值。
这些都是非常基本的知识。
File类
&I
/O流:字节流,字符流,缓冲流总结
本文详细介绍了Java中的File类,包括其构造方法、文件创建、判断与获取功能的方法以及删除操作。此外,还讲解了I/O流的基本概念、分类,如字节流与字符流,并通过示例展示了字节缓冲流和字符缓冲流的使用。
linux监控内存增长,Linux 性能监控之CPU&内存
&I
/O监控Shell脚本2
本文介绍了一套Linux性能监控的Shell脚本,包括捕获、停止和分析CPU、内存和I/O数据。脚本通过`top`、`vmstat`和`iostat`命令收集信息,并详细解析了如何提取CPU利用率、上下文切换、内存使用和磁盘I/O等关键指标。此外,还提供了针对特定进程的监控信息。适用于系统性能诊断和优化。
Linux 性能监控之CPU&内存
&I
/O监控Shell脚本2
本文详细介绍了如何使用Shell脚本进行Linux系统的CPU、内存、I/O性能监控,包括捕获数据、停止捕获数据及提取数据的方法,并提供了具体的脚本实现与解析流程。
Excel操作技巧:三列内容合并生成到另外一列中;在判断某列里面的值在另外列中是否存在
博客介绍了Excel操作技巧,需求是将CDE列值合并到F列,GHI列值合并到J列,再判断J列值是否存在于F列。具体操作是用函数=C1&D1&E1和=G1&H1
&I
1分别合并列值,用=IF(COUNTIF(F:F,J1)>0,\有\\无\)判断存在性。
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章