一、指针(Pointer)
概念:指针是一个存储内存地址的变量(或数据对象)。
C语言程序开发中,当通过类似于 int num = 10方式定义一个对象时候,系统会为num对象开辟一块内存空间用来储存num的值,同时系统会开辟一块内存用来储存num所对应的内存地址,储存num内存地址的变量即为指针。其实现过程如下图所示:
![](http://upload-images.jianshu.io/upload_images/10982856-f0fca4b06ba13136.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
指针的应用:
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
int num = 10;
int *p_num = #/*&为取地址符,用来获取num对象的内存地址*/
*p_num = 20;/*通过内存地址修改对象内容*/
printf("num的内存地址为:%p
p_num为:%p
num的值为:%d
",&num,p_num,*p_num);/* *p_num意思为通过内存地址获取对象内容 */
// 野指针:指向的内存地址不存在的指针
// 空指针:不指向任何内存的指针
}
return 0;
}
输出结果为:
num的内存地址为:0x7ffeefbff64c
p_num为:0x7ffeefbff64c
num的值为:20
Program ended with exit code: 0
二、数组(Array)
(一)数组的概念
用来存储一组数据的构造数据类型。
特点:只能存放一种类型的数据,如全部是int型或者全部是char型,数组里的数据成为元素。
(二)数组的定义
格式: 类型+数组名+[元素个数];
Int ages[5]={17,18,19,20,21};
(三)数组内存存储
数组的地址 == 数组名(ca)== 数组的首元素的地址&ca[0]
在内存中,内存从大到小进行寻址,为数组分配了存储空间后,数组的元素自然的从上往下排列存储,整个数组的地址为首元素的地址。模拟该数组的内存存储细节如下:
![](http://upload-images.jianshu.io/upload_images/10982856-4983327f33e85a37.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
(四)二维数组
Int ages1[3][10];//数组能够存放3个数组,每个数组存放10个数值,共3x10=30个述职数值.
内存情况:
![](http://upload-images.jianshu.io/upload_images/10982856-c70f284450312181.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)