指针与数组
来源:互联网 发布:mac os ps 破解版 编辑:程序博客网 时间:2024/06/14 12:16
C语言中经常会用到这两个东西,指针,数组。下面我从值,内存分配,访问形式这几个方面来分析一下这两个区别。
值及内存分配。
指针时一个变量,在32位系统下,它的大小永远是4个byte,指针的值是地址,它通过保存指针所指向对象的首地址来访问这个对象。
例如:
#include<stdio.h>int main() { int a=1; int *p=&a; printf("%d",*p); return 0; }
这里有三个概念:*p,p,&p;(一定要分清楚这三个概念,不然在以后学习中会遇到许多困难)
*p------->指针所向对象的值;(a)
p-------->指针所指向对象的首地址;(&a)
&p--------->指针本身的地址;(&p)
数组,你可以把它想象成学校澡堂的储物柜,每一个柜子都有自己的编号,你可通过编号来找到任何一个柜子。数组下标的道理与这个相同,不过数组下标是从0开始。
数组的大小与它所存储元素的类型,个数有关。定义数组时必须指明它的元素类型和元素个数。定义好之后,它的大小是不能修改的。
数组可以存储任何类型的数组,不包括函数。
#include<stdio.h>int main() { int a[3]={1,2,3}; int a[]="abcd"; return 0; }
这里要记住,数组名就是数组首地址,请自行查阅 &a与a的区别。
访问形式
下面这部分内容可能比较难懂,指针可以以下标的形式访问指针的元素,,数组也可以用指针的形式访问数组的元素。
读下面函数:
#include<stdio.h> int main() { char *p="abcdef"; char arr[]="abcdef"; printf("%c\n",*(p+1)); printf("%c\n",p[1]); printf("%c\n",arr[1]); printf("%c\n",*(arr+1)); return 0; }
当你执行这个程序的时候,会发现运行框里会输出4个b。
1 0
- 指针:指针与数组
- 指针与指针数组
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组与数组指针
- 数组指针与指针数组
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组与数组指针
- 指针数组 与数组指针
- 指针数组与数组指针
- 数组指针与指针数组
- 指针数组与数组指针
- 指针数组与数组指针
- Java序列化id
- 为什么不要在category中重写一个类原有的方法
- 关于屏幕适配
- iOS~runtime理解
- iOS_时间戳与时间间的互相转化
- 指针与数组
- Bootstrap(二) 表单
- 指针数组与数组指针
- 通配符(1)
- css样式表<style>元素里面的*符号代表声明意思?
- 多线程下HashMap的死循环问题
- 华工校赛 F. Bracket Sequence
- 【Spring】Spring MVC原理及配置详解
- IOS 读二进制数据文件