经典笔试题——a和&a有什么区别

简介: 请写出以下代码的打印结果: 1 #include 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个元素。

请写出以下代码的打印结果:

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个元素。

img_e00999465d1c2c1b02df587a3ec9c13d.jpg
微信公众号: 猿人谷
如果您认为阅读这篇博客让您有些收获,不妨点击一下右下角的【推荐】
如果您希望与我交流互动,欢迎关注微信公众号
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。

目录
相关文章
|
7月前
|
机器学习/深度学习 人工智能 C语言
|
8月前
|
JavaScript 前端开发 Go
经典面试题目
经典面试题目
45 0
|
编译器 C语言 开发者
掌握指针和数组:经典笔试题攻略(万字详解)(上)
掌握指针和数组:经典笔试题攻略(万字详解)(上)
58 0
|
程序员 C语言
初阶函数经典例题(2)
初阶函数经典例题(2)
|
8月前
|
存储 Java 编译器
经典指针笔试题你会了嘛
经典指针笔试题你会了嘛
84 0
|
缓存 算法 C语言
【数据结构与算法篇】栈与队列(详解)附加Leetcode经典笔试题
【数据结构与算法篇】栈与队列(详解)附加Leetcode经典笔试题
76 0
|
存储 编译器 C语言
掌握指针和数组:经典笔试题攻略(万字详解)(下)
掌握指针和数组:经典笔试题攻略(万字详解)(下)
83 0
|
存储 C++
大厂经典指针笔试题
大厂经典指针笔试题
【经典笔试题2】
首先分析代码,a是数组名,是数组首元素地址,&a取到整个数组的地址,+1跳过了整个数组,a强转成int*类型,然后赋值给ptr,此时ptr指向的就是数组a后面的地址,如下图:
全网最经典函数题型【详解】——C语言
全网最经典函数题型【详解】——C语言