数组 a 与 &a 的区别联系
2016-06-10 00:16
204 查看
int a[10];
那么 a 的值是 数组首元素的首地址
&a 的值也是上面的
但是区别
&a数组a的首地址
对指针加1 得到是下一个元素的地址,一个类型为T,+1 是以sizeof(T)为移动单位的
#include<stdio.h>
int main(int argc,char *argv[])
{
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a + 1);//指针移动了相当一个数组,又将地址进行强转
printf("%x\n",&a[5]);
printf("%x\n",ptr);
printf("%d\n %d\n",*(a +1),*(ptr-1)); //指针移动一个int型大小,即就是一个元素
return 0;
}
int a[10];
那么 a 的值是 数组首元素的首地址
&a 的值也是上面的
但是区别
&a数组a的首地址
对指针加1 得到是下一个元素的地址,一个类型为T,+1 是以sizeof(T)为移动单位的
#include<stdio.h>
int main(int argc,char *argv[])
{
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a + 1);//指针移动了相当一个数组,又将地址进行强转
printf("%x\n",&a[5]);
printf("%x\n",ptr);
printf("%d\n %d\n",*(a +1),*(ptr-1)); //指针移动一个int型大小,即就是一个元素
return 0;
}
<span style="font-size:24px;">#include<stdio.h> int main(int argc,char *argv[]) { int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a + 1); printf("%x\n",&a[5]); printf("%x\n",ptr); printf("%d\n %d\n",*(a +1),*(ptr-1)); return 0; }</span>
相关文章推荐
- Linux C函数参考手册(PDF版)
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#比较二个数组并找出相同或不同元素的方法
- C# partial关键字说明
- C#动态调整数组大小的方法
- Lua教程(十七):C API简介
- 详解Lua中的数组概念知识
- 简单谈谈lua和c的交互
- C#用链式方法表达循环嵌套
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法