数组指针和数组首地址
来源:互联网 发布:淘宝上有没有猛将气 编辑:程序博客网 时间:2024/06/04 20:09
下面代码会输出什么()
1
2
3
4
5
6
int
main(
int
argc,
char
**argv)
{
int
a[
4
] = {
1
,
2
,
3
,
4
};
int
*ptr = (
int
*)(&a +
1
);
printf(
"%d"
, *(ptr -
1
));
}
答案 4
解析:
这边主要考察的是数组指针和数组首地址的问题。
&a是数组指针,a是数组首地址。
而指针的+1,增加的是1个指针类型的长度。比如&a是数组指针,(&a + 1)增加的是1数组的长度。
所以题目中第四步的ptr指向的是a[4]的位置。
而(ptr - 1)减少的是1个数据元素的长度。第五步ptr指向的是a[3],页就是4
解析:
其实测试可以发现,a 和 &a 是同一个地址,printf("%d",a),printf("%d", &a)结果是相同的。
但是其代表的含义不同,*(a+1)代表从a数组首地址跳跃一个int的长度,*(&a+1)表示从a数组首地址跳跃一个数组的长度,也就是指向a数组最后一个元素的下一个位置,因此*(ptr- 1)表示a数组的最后一个元素。
阅读全文
0 0
- 数组首地址和指针
- 数组指针和数组首地址
- 数组名、指针和地址
- 数组指针和偏移地址
- 指针的地址和数组的地址
- 数值名,数组首地址,数组指针
- 数组地址和数组首元素地址
- 数组名和数组名取地址、指针数组和数组指针的区别
- 有关指针,地址和数组名等等。。
- 数组和指针地址移动问题
- 指针 数组 地址
- 指针地址数组
- 关于数组地址,指针
- 数组,指针,地址
- 指针地址与数组地址
- C/C++拾遗:关于数组的指针和数组元素首地址的一道经典题
- C/C++ 关于数组的指针和数组元素首地址的一道经典题
- 指针数组和数组指针
- css height=auto不响应transition
- Java中的String为什么是不可变的? -- String源码分析
- Lua 学习笔记
- Dubbo--
- stem与plot的区别
- 数组指针和数组首地址
- javascript的语法
- Linux Mint 18.2 下载工具Axel&uGet
- PPAPI载入错误
- 函数调用方式
- PCA降维——主成分分析(principal component analysis,PCA)与LDA(线性判别分析)
- 【超详细步骤】在Webstorm里增加新建.vue文件功能并支持高亮vue语法和es6语法【超详细步骤】
- docker中使用xtrabackup对mysql的备份与恢复
- 浙江中医药大学暑期训练测试赛八B