社区
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;
}
谢谢!!
...全文
83
13
打赏
收藏
i和&i的分别
请问以下代码中的i和&i 有什么分别? 各有什么用途? #include "iostream.h" void main(){ int no = 10; int *i = &no; cout << i <<endl; cout << &i<<endl; } 谢谢!!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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] & 0xFF 原理详解
代码中加密的时候 用到bytes[i] & 0xFF MessageDigest md5 = MessageDigest.getInstance("MD5"); bytes = md5.digest(basestring.toString().getBytes("UTF-8")); 。。。。。。。。。 String hex = Integer...
对int * const p=
&i
, int const * p=
&i
与int const * const p=
&i
的理解
对int * const p=&amp;i, int const * p=&amp;i与int const * const p=&amp;i的理解 对int * const p=&amp;i, int const * p=&amp;i与int const * const p=&amp;i的理解,指针常量,指向常量的指针与指向常量的指针常量 一:首先这里指明const的用法: const 常量类型 ...
sicily--1133. SPAM
题目不难,但是真的调试到我心都碎了while(s[i] == 45 || s[i] == 95 || (s[i] >= 48 && s[i] = 97 && s[i] = 65 && s[i] 用以判断是否符合邮箱地址的规范,包含了“0 - 9 ”、“A - Z‘、”a - z“、”_“、”-“、”.“的检查我觉得这道题关键的是有两个地方 a)当前字符是"."的操作,判断head 或者是 tai
java i=i++和j=i++的区别
i=i++;j=i++的区别 i=i++-----------在java中 这个语句的前后顺序应该是这样的(tmp=i;i++;tmp==i) java的编译器在遇到i++和i- -的时候会重新为变量运算分配一块内存空间,以存放原始的值,而在完成了赋值运算之后,将这块内存释放掉,下面首先看一下如果是j=i++的情况: i的原始值存放在后开辟的内存中,最后这个值将赋值给j,这样j=i++...
Leetcode【15】3Sum(Java)
1、总体思路是三个数,摁住一个,另外两个双指针 2、如果第一数就大于0了,那就肯定不用循环了,因为数组已经经过排序了 3、去重对于while(i < j && nums[i] == nums[++i]); while(i < j && nums[j] == nums[--j]); 假设此时i=1,那么++i就是2,比较nums[1]和num...
C语言
70,023
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章