c语言中的*与&

可以说对于c语言的变量来说:*与&的是互为逆运算吗?在指针变量前加*则变成一个普通变量在普通变量前加&则变成一个指针变量... 可以说对于c语言的变量来说:*与&的是互为逆运算吗?

在指针变量前加*则变成一个普通变量
在普通变量前加&则变成一个指针变量
展开
 我来答
鲸娱文化
2019-03-08 · TA获得超过261万个赞
知道大有可为答主
回答量:13.3万
采纳率:92%
帮助的人:8767万
展开全部

最近”盘“字很流行,盘是什么意思?为什么能成为网络热词?

来自桃花江助人为乐的银柳
推荐于2017-11-25 · TA获得超过895个赞
知道小有建树答主
回答量:376
采纳率:100%
帮助的人:145万
展开全部
你这么理解是可以的,
*就是取指针所指地址处保存的数值,
&就是去一个变量的地址。
例如:
int a=10;
print("\n%d",&a); //打印出来的是a的地址
print("\n%d",*(&a); //打印出来的是10
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HelloWhoops96
2018-03-31 · TA获得超过1万个赞
知道小有建树答主
回答量:78
采纳率:100%
帮助的人:1.1万
展开全部

*是指针运算,&是取地址。*后面必须是指针变量,&后面则什么变量都可以(除了常数)。

c语言 

  • C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

  • 尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

  • 二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的国际标准语法,称为ANSI C,作为C语言最初的标准。


指针*

如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。

指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。

指针是一把双刃剑,许多操作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。


本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1095690
2013-01-27 · 超过15用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:43.9万
展开全部
*p+2 与 * (p+2)不一样,前者是K,因为*运算级别优先,*p等于‘i’,然后加法运算,系统自动转换‘i’为整形(ASCLL码105)再+2,此时为105+2等于107,107对应ASCLL字符‘k’,看你的打印方式,也可能就是107!但后者可能就是你想要的,结果为‘m’,* (p+2)算是指针偏移,指向‘m’
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Ynz_痕迹
2013-01-27
知道答主
回答量:17
采纳率:0%
帮助的人:6.9万
展开全部
我想你应该是把*p想成地址了,以为 2就可以打输出下一个字符了,呵呵,犯了个低级错误.首先*p不是地址,初始时它是ch的第一个字符“i”,“i”的asc2码的值是105,“k”的值是107,所以你把“i”加2,相当于把i的asc2值加2,所以就变成了107,107是k的值,所以就变成k了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(12)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式