社区
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;
}
谢谢!!
...全文
114
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就是获取这个变量的值。
这些都是非常基本的知识。
MoreWindows白话经典算法之七大排序(高清版)
这是本人在研一上课时所整理的文档,包括冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法,这些文章不仅使我在考试中取了不错的成绩,也为后来顺利面过迅雷,腾讯,微软打下了良好的基础,现在整理成电子书形式,希望能对大家有所帮助。
C/C++程序设计员应聘常见面试试题深入剖析
C/C++程序设计员应聘常见面试试题深入剖析,不看会后悔!!!!!!!!!
Assertion `index >= -sizes[i] && index < sizes[i] && “index out of bounds“` failed.
operator(): block: [0,0,0], thread: [5,0,0] Assertion `index >= -sizes[i] && index < sizes[i] && "index out of bounds"` failed.的一种解决方案
linux i217 v网卡驱动,英特尔网卡驱动下载_Intel英特尔I217
&I
218
&I
219系列网卡驱动官方下载 - 系统之家...
Intel英特尔I217/I218/I219系列网卡驱动官方版是款针对Intel英特尔旗下I217/I218/I219系列网卡打造的驱动程序,适用于32/64位的Win7以上操作系统,Intel英特尔网卡驱动能够很好的解决电脑和网卡的连接问题,让网卡能够正常的使用,提高性能。注意,该驱动包里没有Setup自动安装程序,需要朋友手动安装。安装教程1、打开设备管理器;2、选择“网络适配器”或缺少驱动有...
for(auto
&i
:s)和for(auto i:s)另一种循环方式
今天在某个平台看到了某位大神的题解,发现了这种更为简洁的循环方式。 举个例子: for(auto i:s) #include <iostream> using namespace std; int main() { int a[5]={1,2,3,4,5}; for(auto i:a) { cout<<i<<" "; } return 0; } for(auto &i:s) #include <iostream> using names
C语言
70,035
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章