社区
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;
}
谢谢!!
...全文
107
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就是获取这个变量的值。
这些都是非常基本的知识。
bytes[i] & 0xf0是怎么运算的
** bytes[i] & 0xf0是如何运算的 ** StringUtil类: public class StringUtil { /* * 16进制数字字符集 */ private static String hexString="0123456789ABCDEF"; /* * 将字符串编码成16进制数字,适用于所有...
java简单的判断奇偶数方法(i & 1) != 0 i为奇数
今天找提高代码性能的方法,刚好看到这篇文章里http://www.cnblogs.com/chinafine/articles/1787118.html 提到的.1. 奇偶判断不要使用 i % 2 == 1 来判断是否是奇数,因为i为负奇数时不成立,请使用 i % 2 != 0 来判断是否是奇数,或使用高效式 (i & 1) != 0来判断。 想着今...
中国大学MOOC C语言程序入门设计 浙江大学 第一单元检测习题:int i ; scanf(“%d“,
&i
) ; i%=4 ; 问执行后,i 会有几种可能性?
中国大学MOOC C语言程序入门设计 浙江大学 第一单元检测习题:int i ; scanf("%d",&i) ; i%=4 ; 问执行后,i 会有几种可能性? 题目如下: 对于以下代码: int i; scanf("%d",&i); i%=4; 问执行后,i 会有几种可能性? 我们可以很容易的看出,题目实际的意思就是:输入一个整型数 i ,让 i 除以 4 ,问余数有几种可能性? 我们知道,两个数相除只有两种情况:①能被整除;②不能被整除; 我们还知道两个整型数相
i++ 与 ++i 的使用方法
转载: https://blog.csdn.net/faterman/article/details/26715399 一、含义: (1) i++ 简单来说就是先用i的值来参加表达式的计算,然后再自加1 i = 4; a = i++; //此时,先做a=i=4,再做i++,故a=4,i=5 (2) ++i 则是先自增1,再用自加后的值来做运算。 i = 4; a = ++i; ...
DevOps组织I&O专业人员新角色分析与技能提升
最近在“Top 10 Trends Impacting Infrastructure & Operations for 2019”中Gartner指出,十大趋势之一是I&O领域的新角色,即I&O越来越多地承担云服务支持角色,并培养在聚集、定制、集成和治理方面的新技能。 引言:在“DevOps能力之屋(Capabilities House of DevOps)”中,华为云D...
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章