这里数组和指针都是C语言的内容,但是OC是在C的基础上又添加了一些语法,这里就简单的介绍一下。
和java不一样这里的数组不是对象,因此不能获取一个数组的长度,这里的数组,仅仅是内存中紧密排列的同类型数据。
指针,里面存放的是内存地址,通过这个内存地址可以找到其指向的值。
在这里再介绍两个运算符“*”和“&”,之前这两个符号分别代表乘和按位与,当这两个符号位置变化的时候,意思就不一样了
int *a;//这里表示int型指针,*表示指针
int b=3;
a=&b;//这里&代表取b的内存地址,&取地址符
int c=*a;//这里*代表取a所指向内存的数据,*取内容符
java语言中没有这样的概念,做java开发的注意了,这里很重要,多查一些资料,好好掌握一下
在代码中,注释写的很清楚,直接看注释吧。
//
// main.m
// HelloWorld
//
// Created by Moluth on 17/4/5.
// Copyright (c) 2017年 Moluth. All rights reserved.
//
//头文件。里面包含了好多东西,可以算是一个基本框架吧
#import <Foundation/Foundation.h>
//main函数,程序入口 argc 参数个数,argv 所有参数字符串类型
int main(int argc, const char * argv[]) {
//从名字上来看,这个代码块应该可以自动释放内存
@autoreleasepool {
//数组
int a[10],b[]={1,2,3,4,5};
for(int i=0;i<5;i++){
NSLog(@"%d\n",b[i]);
}
//输出1,2,3,4,5
for(int i=0;i<10;i++){
a[i]=i*2;
}
for(int i=0;i<10;i++){
NSLog(@"%d\n",a[i]);
}
//输出0,2,4,6...16,18
//指针,指针存放的是内存地址
int c=3;
int *pa=&c;// &c &代表取地址符号 * 代表是指针类型
NSLog(@"\n%d",*pa);//输出3
//指针与数组关系
pa=a;
for(int i=0;i<10;i++,pa++){
NSLog(@"%d\n",*pa);// *pa代表去pa所指向的内存中取值 *在这里是取内容符
}
//输出0,2,4,6...16,18
for(int i=0;i<10;i++){
NSLog(@"%d\n",*(pa+i));
}
//输出0,2,4,6...16,18
}
return 0;//返回值
}