| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1491 人关注过本帖
标题:最后一个取地址printf语句违法不违法?
只看楼主 加入收藏
堕落之地
Rank: 1
等 级:新手上路
帖 子: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
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:633
专家分:3045
注 册:2011-4-22
收藏
得分:20 
越界了,但是c语言不做这方面的检查。
这是不安全行为,类似操作在操作系统中运行会出现不可预料结果。
2019-04-19 18:27
堕落之地
Rank: 1
等 级:新手上路
帖 子:57
专家分:5
注 册:2019-3-11
收藏
得分:0 
好的 大佬
2019-04-19 19:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分: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
快速回复:最后一个取地址printf语句违法不违法?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016579 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved