C Language Study - 指针的形式 & 下标的形式
来源:互联网 发布:html5引导动画源码 编辑:程序博客网 时间:2024/04/30 16:46
指针形式和下标形式
A> char *p = "abcdef";//定义一个字符串,用一个指针指向这个字符串
B>char a[] = "123456";//定义一个字符数组 a 是数组首元素的首地址,而不是数组的首地址
在上面的A>定义中,假如我们要取出c这个字符,那么有以下两种方法:
<1> 指针的形式:*(p+3)
<2>下标的形式:p[3]
两种方式,我们都可以这个进行理解:
编译器首先计算出p的值,也就是p所储存的地址值,然后加上偏移量3,得到一个新的地址,
然后再取出这个新地址里面所存储的数据,也就是字符c
例如,可以写出以下程序输出A>中定义的字符串。
#include <stdio.h>int main(void){ char *p="abcdef";//A> int iOffset = 0; for(iOffset=0;iOffset<strlen(p);iOffset++) printf("%c",*(p+iOffset)); return 0;}同理,在B>的定义下,假若我们要取出5这个数据,也有两种方法:
<1>指针的形式:*(a+4) ;此时,a代表的是数组首元素的首地址,然后用这个地址加上偏移量,
得到一个新的地址,再从这个地址取出数据
<2>下标的形式:a[4];一样。
值得注意的是,不知道你发现没有,上面所说的偏移量,有一个问题,在取出基地址(A>中的p值,B>中的a地址)后,
所加的偏移量应该是偏移数X每个元素的大小。上例中因为字符类型的内存大小刚好为1,所以很容易产生误导。特别注意!
1 0
- C Language Study - 指针的形式 & 下标的形式
- C Language Study - 函数指针的使用
- c语言指针的形式参数
- C Language Study - 错误的指针初始化方式
- C Language Study - 数组和指针的区别(1)
- 函数指针的赋值形式
- 指针内部的存储形式
- C常见问题之字符串的数组形式与指针形式的区别
- C语言字符串的指针—字符串的表示形式
- C指针与数组两种形式的区别
- 《C和指针》——数组的奇怪形式
- 以指针的形式和以下标的形式访问指针?以指针的形式和以下标的形式访问数组?
- 【C++】二分查找的递归形式和非递归形式
- 用指针调用函数的不同形式
- 定义函数指针的两种形式
- 用指针表示二维数组的形式
- 指针定义的几种形式
- const指针的两种形式
- 二月末,三月初
- 浅谈java内存
- YCSB性能测试工具使用
- 在AndroidStudio中使用PagerSlidingTabStrip
- 在Code::Blocks中配置OpenGL
- C Language Study - 指针的形式 & 下标的形式
- 2014—2015年度总结
- use email as Username with MVC5 Microsoft.AspNet.Identity
- 关于工作量估算,你知道的和你不知道的一切
- System/Runtime/Calendor系统常用类
- Redis集群功能预览
- win7 iis php出现404.17错误
- Java:几个基本概念 IDE/SDK(JDK)/Tomcat/JavaBean/Serverlet/JSP/JavaScript
- 《数字图像处理》——图像变换与增强