数组指针
来源:互联网 发布:mysql emoji 编辑:程序博客网 时间:2024/05/21 22:39
编译器VC6.0
#include <stdio.h>
#include <string.h>
// 数组指针
/* 定义:int (*p)[5] 数组指针:这是一个指针,该指针指向一个数组,该数组有5个int型元素,
该数组占有sizeof(a)个连续的内存单元,该指针指向该内存块
的首地址,也就是该数组的首地址。
int a[5]={0,1,2,3,4};int (*p1)[3]=&a;
int *p2=&a;
p1是个指针,该指针指向数组a[5],p1+1表示p1加了一个步长(3个int数据类型)
假设a的地址是0x1000;
p1存放的内容: 0x1000; p1+1存放的内容: 0x1000+sizeof(int)*3=0x1012
*p1存放的内容:0x1000; *p1+1存放的内容: 0x1000+sizeof(int)=0x1004
p2存放的内容: 0x1000; p2+1存放的内容: 0x1000+sizeof(int)*5=0x1020
*p2存放的内容:0 ; *((int*)(p2+1)-1)存放的内容:4
int *p[5] 指针数组:这是一个数组,该数组有5个数据元素,每个数据元素存放一个
指针,该指针指向的数据类型是int类型,该类型占有的内存大
小为sizeof(int)。
*/
int main()
{
// 一维数组和数组指针应用:
/* int a[5]={0,1,2,3,4};
int (*p1)[5]=&a;//左右两侧的数据类型是一样的都是数组的地址
int (*p2)[5]=a;//左右两侧的数据类型是不一样的,左侧的是数组的地址,右侧的是数组首元素的地址,只不过这两个地址值是一样的,但p2+1和a+1是不同的。
printf("p1+1=%d\n",p1+1);
printf("p2+1=%d\n",p2+1);
*/
// 把上面的int (*p1)[5]改为int (*p1)[3]
/*
int a[5]={0,1,2,3,4};
int (*p1)[3]=&a;
int (*p2)[3]=a;
printf("p1+1=%d\n*(p1+1)=%d\n",p1+1,*(*(p1+1)+1));
printf("p2+1=%d\n*(p2+1)=%d\n",p2+1,*(p2+1));
printf("p1[0][1]=%d\n*(p2+1)=%d\n",p1[0][1],*(p2+1));//如果不理解,等我发了二位数组和数组指针再看
*/
}
0 0
- 指针数组、数组指针
- 指针数组/数组指针
- 指针数组/数组指针
- 数组指针 指针数组
- 指针数组,数组指针
- 数组,指针,数组指针
- 数组,指针,数组指针
- 指针数组&数组指针
- 指针数组&数组指针
- 数组指针 指针数组
- 指针数组/数组指针
- 数组指针&指针数组
- 数组指针 指针数组
- 数组指针 指针数组
- 指针数组 数组指针
- 指针数组,数组指针
- 指针数组 数组指针
- 指针数组&数组指针
- BK树
- 设计模式之适配器模式
- 有关ios8 中location没有起作用的问题
- xcode7 出现的ld: warning: directory not found for option '-F/Applications/Xcode-beta.app/Contents/Devel
- file 和 stream
- 数组指针
- 设计模式之备忘录模式
- 洛谷2279(贪心)
- [UE]《用户体验要素》笔记与所想
- UVa 12439 - February 29
- Android Webview Java和Javascript安全交互
- PHP获取MAC地址
- UIAlertAction 和UIAlertController (UIAlertViewUIActionSheet)
- 编译u-boot1.1.6遇到的编译错误解决方法!