c语言复习(三)
来源:互联网 发布:java snmp 流量监控 编辑:程序博客网 时间:2024/05/22 06:49
指针数组与数组指针
一、数组指针
数组指针就是指向数组的指针,相当于是一个二维数组,先看一个例子:
int a[2][2]={1,2,3,4}; //这是一个2*2的二维数组 int (*p)[2]; //数组指针 p=a; //令p指向数组a
int (*p)[2];这里的p是一个数组指针变量。
假如说a中各元素的地址如下:
则a和p中各元素的值如下:
a是一个数组名,类型是指向一维数组的指针,不是变量,a的值是指针常量,即不能有a++或者a=p这些操作。a指向这块连续空间的首地址,值是&a[0][0]。
a[0]是一维数组名,类型是指向整型的指针,值是&a[0][0],这个值是一个常量。
a[1]是一维数组名,类型是指向整型的指针,值是&a[1][0],这个值是一个常量。
p是一个数组指针变量,指向一维数组的指针变量,值是&a[0][0]。可以执行p++;p=a等操作。
a+1表示指向下一行元素,也可以理解为指向下一个一维数组。
*(a+1)是取出第一行的首地址。
a[0]+1是指向第0行第1个元素,也可以理解为指向一维数组a[0]的第一个元素。
p+1同a+1
(p+1)同(a+1)
虽然a跟a[0]值是一样,但类型不一样,表示的意义不一样。通过分析就不难理解为什么((a+i)+j)和a[i][j]等效了。
二、指针数组
就和整型数组是用来存放整数一样,指针数组是用来存放指针的数组,看下面的例子:
int i=1,j=2; //p先跟[]结合,然后再跟*结合 int *p[2]; //指针数组,存放指针的数组 p[0]=&i; p[1]=&j; printf("%d",sizeof(p));
此例数组p就两个元素,p[0]是指向i的指针,p[1]是指向j的指针。这两个指针都是int型指针,所以p是存放int型指针的数组。sizeof(p)返回数组占用的总空间,所以程序输出是8
阅读全文
0 0
- c语言复习(三)
- C语言复习笔记(三)
- C总结复习(三)
- C语言 数据类型(复习)
- C语言复习(一)
- C语言复习(一)
- C语言复习笔记三:三种程序结构记习题总结(1)
- 复习linux C编程(三)之 linux下的C语言环境
- C++语言复习三
- 【C语言复习(三)】enum、typedef 和#define的分析与区别
- 复习C语言系列三:sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l
- 【C语言复习(四)】指针基础
- 【C语言复习(十二)】数组基础
- C语言复习基础(1)
- C语言复习笔记(一)
- C语言复习笔记(二)
- C 语言 函数的总结(复习)
- C语言 指针总结(复习)
- unity3d代码设置环境光
- 删除过时的hls缓存
- 线程常用的两种创建方法
- Windows10 下 Eclipse+MonkeyRunner开发环境搭建
- SpringBoot(4) 统一异常处理
- c语言复习(三)
- C#中 openfiledialog 和 FolderBrowserDialog 的使用 2
- 通过web_custom_request编写接口压测脚本
- Spark RDD 分区数详解
- [ReactNative]Image点击事件[this.props.pop()]无法返回上一页
- Python3 random(伪随机数 模块)
- Hibernate延迟加载
- JavaScript用0初始化二维数组
- CentOS下启动和停止Tomcat