搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 最后一个取地址printf语句违法不违法?
标题:
最后一个取地址printf语句违法不违法?
只看楼主
堕落之地
等 级:
新手上路
帖 子:57
专家分:5
注 册:2019-3-11
结帖率:
100%
楼主
已结贴
√
问题点数:20 回复次数:3
最后一个取地址printf语句违法不违法?
#include<stdio.h>
int main(){
int in[10]={0,1,2,3,4,5,6,7,8,9};
printf("%d\n",in+9);
printf("%d\n",&in[10]);
}
搜索更多相关主题的帖子:
地址
printf
语句
int
main
2019-04-19 18:14
zbjzbj
来 自:郑州
等 级:
贵宾
威 望:
52
帖 子:620
专家分:3020
注 册:2011-4-22
第
2
楼
得分:20
越界了,但是c语言不做这方面的检查。
这是不安全行为,类似操作在操作系统中运行会出现不可预料结果。
2019-04-19 18:27
堕落之地
等 级:
新手上路
帖 子:57
专家分:5
注 册:2019-3-11
第
3
楼
得分:0
好的 大佬
2019-04-19 19:15
rjsp
等 级:
版主
威 望:
507
帖 子:8890
专家分:53117
注 册:2011-1-18
第
4
楼
得分:0
&in[10] 不违法,因为C/C++规定
数组最后一个元素的下一个元素的地址
是可比较的。
否则就没法写 for( int* p=in; p!=in+10; ++p ) 或 for( int* p=in; p<=in+9; ++p ) 了
&in[11] 是否违法就比较模糊了,因为它没有任何作用,即不能
解引用
,又不能用于
指针比较
。
你代码
违法
的地方在 "%d",应该用 "%p"。
2019-04-22 09:14
4
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-494288-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.232421 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved