经典笔试题——a和&a有什么区别
请写出以下代码的打印结果:
1 #include<stdio.h> 2 void main() 3 { int a[5]={1,2,3,4,5}; 4 int *ptr=(int*)(&a+1); 5 6 printf("%d,%d",*(a+1),*(ptr-1)); 7 }
输出结果为:2,5
至于为什么输出结果是5?
要时刻牢记这样的观点:数组名本身就是指针,再加上&,就变成了双指针,这里的双指针就是指二维数组,加1,就是数组整体加1行,ptr指向a的第6个元素。
微信公众号:
猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。