数组和指针的关系
来源:互联网 发布:c语言求三个数最小值 编辑:程序博客网 时间:2024/04/28 13:21
指针提供了一种用来使用地址的符号方法。指针能够有效地处理数组。数组标记实际上就是一种变相使用指针的形式。数组名同时也是该数组首元素的地址。
例如下面这样程序:
#include <stdio.h>
#define SIZE 4
int main()
{
short data[SIZE];
short *pti;
short index;
double bills[SIZE];
double *ptf;
pti=data;
ptf=bills;
printf("%20s %10s \n","short","double");
for(index=0;index<SIZE;index++)
{
printf("pointer+%d:%10p %10p\n",index,pti+index,ptf+index);
printf("pointer+%d:%10p %10p\n",index,data+index,bills+index);
}
return 0;
}
输出如下:
short double
pointer+0:0xbf96697c 0xbf966958
pointer+0:0xbf96697c 0xbf966958
pointer+1:0xbf96697e 0xbf966960
pointer+1:0xbf96697e 0xbf966960
pointer+2:0xbf966980 0xbf966968
pointer+2:0xbf966980 0xbf966968
pointer+3:0xbf966982 0xbf966970
pointer+3:0xbf966982 0xbf966970
此处data,bills是数组首元素的地址,data+index、bills+index是数组data、bills的第index个元素的地址。
short类型是使用2个字节,double 类型使用8个字节。指针说明符%p是用于显示地址,通常以十六进制显示。
对一个指针加1的结果就是对该指针增加1个存储单元。对于数组而言,地址会增加到下一个元素的地址,而不是下一个字节。
1)指针的数值就是它指向的对象的地址。地址的内部表示方式由硬件来决定。对于包含多个字节的数据类型,比如double类型的变量,对象的地址通常指的是其首字节的地址。
2)在指针前运用*运算符就可以得到该指针所指向的对象的数值。
3)对指针加1,等价于对指针的值加上它所指向的对象的字节大小。
对于下面的语句:
data+2==&data[2]; //相同的地址
*(data+2)=data[2]; // 相同的值
说明了数组与指针的密切关系:可以用指针标识数组的每个元素,并得到每个元素的数值。从本质上说,对同一种对象有两种不同的符号表示方法。
例如,定义a[n]时,意思是*(a+n),即“寻址到内存中的a,然后移动n个单位,再取出数值”。
- 指针数组和数组指针的关系
- 数组和指针的关系
- 数组和指针的关系
- 数组和指针的关系
- 指针和数组的关系
- 数组和指针的关系
- 数组和指针的关系
- 数组和指针的关系
- 数组和指针的关系
- 数组和指针的关系
- 指针和数组的关系
- 数组的数组"、"数组的指针"、"指针的数组"和"指针的指针"的关系
- C语言中指针数组和数组指针的关系
- 第五章。数组和指针的关系
- 二维数组和指针的关系
- C++二维数组和指针的关系
- 二维数组和二维指针的关系
- 二维指针和二维数组的关系
- 42. Trapping Rain Water
- ssh配置无密码登录
- 235. Lowest Common Ancestor of a Binary Search Tree 难度:easy
- JavaScript基础语法 获取元素
- goroutine scheduler介绍
- 数组和指针的关系
- git比较两个分支的文件的差异
- C++面试题
- PAT 乙级 1044. 火星数字(20)
- Caffe for Windows 学习第一天
- Android - TabHost 选项卡功能用法详解
- python3 NameError: name 'xrange' is not defined
- matlab画平滑曲线的两种方法
- pat-a1078. Hashing (25)