`

【IOS 开发】Object - C 数组使用详解

 
阅读更多

.



一. 一维数组



1. 一维数组定义



(1) 数组定义


数组定义格式 : type arrayName[len];

-- 默认初始化 : 注意 数组定以后, 如果是 int 数组默认初始化为 0, 如果是浮点型 默认元素为 0.0, 如果是 指针类型数组 默认类型 null;



(2) 数字地址计算


数组元素地址性质 : 数组元素是连续存放的;

-- 数组首地址 : 数组变量是一个指针, 其存放了数组中元素的首地址;

-- 元素地址计算公式 : 元素地址 = 数组首地址 + 数组元素所占内存大小 * 元素索引值;




2. 数组初始化


指定数组元素个数 :

-- 全部初始化 : 对数组的所有的元素进行初始化;

-- 部分初始化 : 对数组中的一部分元素进行初始化;


不指定数组个数 : 如果不指定数组个数, 定义时必须初始化, 会根据初始化的元素个数自动推断数组长度;


数组长度计算 : sizeof(arrayName) / sizeof(arrayName[0]);



3. 代码示例


代码示例 :

-- 代码内容 :

/*************************************************************************
    > File Name: 12-oneArray.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 日 12/ 7 16:30:31 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		//定义数组格式 type arrayName[length]
		int array[5];	

		//定义长度, 完全赋值
		int array1[5] = {0, 1, 2, 3, 4};

		//定义长度, 不完全赋值
		int array2[5] = {0, 1, 2};

		//不定义长度, 必须初始化
		int array3[] = {0, 1, 2};

		//定义 C语言字符串数组
		char * array4[] = {"csdn", "octopus", "hello"};

		//定义 Object-C 字符串数组
		NSString *array5[] = {@"csdn", @"octopus", @"hello"};

		//遍历 array2
		for(int i = 0; i < sizeof(array2) / sizeof(array2[0]); i ++)
		{
			NSLog(@"array2[%d] = %d", i, array2[i]);
		}
	}
}
-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-oneArray.m 
octopus-2:oc octopus$ ./a.out 
2014-12-07 16:38:58.238 a.out[379:507] array2[0] = 0
2014-12-07 16:38:58.241 a.out[379:507] array2[1] = 1
2014-12-07 16:38:58.242 a.out[379:507] array2[2] = 2
2014-12-07 16:38:58.242 a.out[379:507] array2[3] = 0
2014-12-07 16:38:58.243 a.out[379:507] array2[4] = 0




三. 多维数组



1. 二维数组定义


二维数组定义格式 : type arrayName[rowLength][columnLength];

-- 数组长度 : 左侧的数字 rowLength 是 一维数组的个数, 即有几行;



2. 多维数组初始化


几种初始化方式 : 示例 int array[3][5];

-- 初始化全部二级数组 : 可以为其初始化 3 个一维数组, 一维数组中得元素个数随意;

-- 初始化部分二级数组 : 可以为其初始化 少于 3 个一维数组, 只初始化一部分;

-- 省略二维数组长度 : 如果在声明数组时进行初始化, 那么可以省略数组的 第一个 数组长度;

-- 省略初始化时的二级数组括号 : 一维数组的括号可以省略, 系统会自动默认初始化的部分自动填充;



3. 示例


代码示例 :

-- Object-C 代码 :

/*************************************************************************
    > File Name: 12-multiArray.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 四 12/11 00:59:14 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {

		printf("1. 初始化全部数组的部分内容\n");
		int array1[3][5] = {
		{1, 2},
		{5, 7, 7},
		{2, 4}
		};

		for(int i = 0; i < sizeof(array1)/sizeof(array1[0]); i ++)
		{
			for(int j = 0; j < sizeof(array1[0])/sizeof(array1[0][0]); j ++)
			{
				printf("%d\t", array1[i][j]);
			}
			printf("\n");
		}

		printf("\n2. 初始化部分数组的部分内容\n");
		int array2[3][5] = {
		{1, 2, 4, 6, 7},
		{1}
		};

		for(int i = 0; i < sizeof(array2)/sizeof(array2[0]); i ++)
		{
			for(int j = 0; j < sizeof(array2[0])/sizeof(array2[0][0]); j ++)
			{
				printf("%d\t", array2[i][j]);
			}
			printf("\n");
		}

		printf("\n3. 省略数组的长度\n");
		int array3[][5] = {
		{1, 2, 4, 6, 7},
		{1}
		};

		for(int i = 0; i < sizeof(array3)/sizeof(array3[0]); i ++)
		{
			for(int j = 0; j < sizeof(array3[0])/sizeof(array3[0][0]); j ++)
			{
				printf("%d\t", array3[i][j]);
			}
			printf("\n");
		}

		printf("\n4. 省略数组的大括号\n");
		int array4[][5] = {
		1, 2, 4, 6, 7,
		1
		};

		for(int i = 0; i < sizeof(array4)/sizeof(array4[0]); i ++)
		{
			for(int j = 0; j < sizeof(array4[0])/sizeof(array4[0][0]); j ++)
			{
				printf("%d\t", array4[i][j]);
			}
			printf("\n");
		}
	}
}

-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-multiArray.m 
octopus-2:oc octopus$ ./a.out 
1. 初始化全部数组的部分内容
1	2	0	0	0	
5	7	7	0	0	
2	4	0	0	0	

2. 初始化部分数组的部分内容
1	2	4	6	7	
1	0	0	0	0	
0	0	0	0	0	

3. 省略数组的长度
1	2	4	6	7	
1	0	0	0	0	

4. 省略数组的大括号
1	2	4	6	7	
1	0	0	0	0



三. 字符串, 字符数组 与 字符串相关函数



1. NSLog 与 printf 对比


NSLog 与 printf 对比 :

-- 输出字符串格式不同 : printf 输出 C 语言格式字符串, 如 "string", NSLog 输出 Object-C 字符串, 如 @"string" ;

-- NSLog 有多余操作 : NSLog 会自动添加 日期 时间 自动换行 等操作;


示例 :

/*************************************************************************
    > File Name: 12-NSLogVSprintf.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 四 12/11 01:18:17 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		NSLog(@"这是 NSLog 输出的字符串");
		printf("这是 printf 输出的字符串");
	}
}

-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-NSLogVSprintf.m 
octopus-2:oc octopus$ ./a.out 
2014-12-11 01:19:07.370 a.out[1925:507] 这是 NSLog 输出的字符串
这是 printf 输出的字符串octopus-2:oc octopus$ 



2. 字符数组 和 字符串


定义字符数组方式 : 下面的两种方法是等价的;

-- 使用字符串初始化 : char array[] = "fuck", 使用这种方法定以后, 会在后面自动加上 '\0';

-- 使用数组方式初始化 : char array[] = {'f', 'u', 'c', 'k', '\0'};


关于字符数组的长度 : 一个由 4 个字符组成的数组, 其长度是 5, 后面还需要加上一个 '\0';


代码示例 :

/*************************************************************************
    > File Name: 12-charArray.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 四 12/11 01:27:12 2014
 ************************************************************************/

#import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		char char_array[] = "fuck";
		char char_array1[] = {
		'f', 'u', 'c', 'k', '\0'
		};

		printf("char_array 大小 : %lu, char_array1 大小 : %lu\n", sizeof(char_array), sizeof(char_array1));
	}
}

-- 运行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-charArray.m 
octopus-2:oc octopus$ ./a.out 
char_array 大小 : 5, char_array1 大小 : 5



3. 常用的字符串处理函数



代码示例 :

-- 代码 :

/*************************************************************************
    > File Name: 12-strMethod.m
    > Author: octopus
    > Mail: octopus_truth.163.com 
    > Created Time: 四 12/11 01:34:08 2014
 ************************************************************************/

 #include <string.h>
 #import <Foundation/Foundation.h>

int main(int argc, char * argv[])
{
	@autoreleasepool {
		char c = '1';
		char c1 = 'A';
		char c2 = 'a';
		char c3 = '\t';

		NSLog(@"字符相关函数");

		printf("c = %c  是否为数字或数字 : %d \n", c, isalnum(c));
		printf("c = %c 是否为字母 : %d\n", c, isalpha(c));
		printf("c = %c 是否为控制字符 : %d\n",c, iscntrl(c));
		printf("c = %c 是否为控制数字 : %d\n", c, isdigit(c));
		printf("c = %c 是否为可打印字符 : %d\n", c, isgraph(c));
		printf("c1 = %c 是否为小写字母 : %d\n", c1, islower(c1));
		printf("c1 = %c 是否为大写字母 : %d\n", c1, isupper(c1));
		printf("c1 = %c 是否为标点符号 : %d\n", c1, ispunct(c1));
		printf("c3 = %c 是否为空白字符 : %d\n", c3, isspace(c3));
		printf("c1 = %c 是否是十六进制字符 : %d\n", c1, isxdigit(c1));


		NSLog(@"字符串相关函数");

		char array[20] = "fuck";
		char array1[] = "bitch";

		//注意 字符串 array 要有足够的空间 存放 后面的 array1
		printf("%s 拼接字符串 \n", strcat(array, array1));

		printf("array 出现 c 的位置 %s \n", strchr(array, 'c'));

		printf("比较 array 与 array1 大小 : array 是否大于 array1 : %d\n", strcmp(array, array1));

	}
}


-- 执行结果 :

octopus-2:oc octopus$ clang -fobjc-arc -framework Foundation 12-strMethod.m 
octopus-2:oc octopus$ ./a.out 
2014-12-11 02:11:08.608 a.out[2164:507] 字符相关函数
c = 1  是否为数字或数字 : 1 
c = 1 是否为字母 : 0
c = 1 是否为控制字符 : 0
c = 1 是否为控制数字 : 1
c = 1 是否为可打印字符 : 1
c1 = A 是否为小写字母 : 0
c1 = A 是否为大写字母 : 1
c1 = A 是否为标点符号 : 0
c3 = 	 是否为空白字符 : 1
c1 = A 是否是十六进制字符 : 1
2014-12-11 02:11:08.610 a.out[2164:507] 字符串相关函数
fuckbitch 拼接字符串 
array 出现 c 的位置 ckbitch 
比较 array 与 array1 大小 : array 是否大于 array1 : 4



分享到:
评论

相关推荐

    iOS控件 -- UIImageView使用详解

    总结,UIImageView是iOS开发中常用且重要的控件,熟练掌握其使用能帮助开发者构建美观、高效的用户界面。了解UIImageView的各种特性和优化方法,有助于提升应用的性能和用户体验。在实际项目中,开发者应根据需求...

    Object-C语言教程0220.zip

    Objective-C的Foundation框架提供了大量基础类,如字符串(NSString)、数组(NSArray)、字典(NSDictionary)等,是进行iOS和Mac开发的基础。 ### 五、UIKit框架 UIKit框架是iOS开发的核心,包括视图(UIView)...

    iOS企业培训视频Object-C基础等教程 就业班全套课程 从基础到就业不是梦

    ### iOS企业培训视频Object-C基础等教程就业班全套课程知识点概览 #### 一、基础知识篇 ##### 1.1 iOS开发概述 - **iOS系统介绍**:了解iOS操作系统的特性和版本发展历史。 - **iOS开发环境搭建**:安装Xcode集成...

    IOS 开发之Object-C中的对象详解

    在iOS开发中,Object-C是主要的编程语言之一,它基于C语言并扩展了面向对象的概念。本篇文章将深入探讨Object-C中的核心概念——对象。 首先,对象是Object-C编程的核心,它们是数据和行为的封装体。与C语言中的...

    IOS Object-C 中Runtime详解及实例代码

    在iOS开发中,Objective-C(简称OC)是一种面向对象的语言,它通过Runtime系统实现了许多动态特性和灵活性。Runtime是Objective-C的运行时环境,它在程序运行时动态地处理类和对象,使得OC具备了消息传递、动态类型...

    Object-C学习大纲.pdf

    ### Object-C 学习大纲详解 #### 一、Object-C 的历史与发展 - **起源**:Object-C 语言起源于20世纪80年代,由 Brad Cox 发明。 - **发展**:它是在 C 语言的基础上增加了面向对象的特性而形成的一种编程语言。 -...

    object-c基础入门

    ### Objective-C基础入门知识点详解 #### 一、Objective-C与Cocoa框架简介 - **Cocoa框架集**:苹果公司提供了Cocoa、Carbon、QuickTime和OpenGL等技术框架集,这些框架集中Cocoa是最核心的部分,它专为Mac OS X和...

    IOS中Key-Value Coding (KVC)的使用详解(烟台杰瑞教育IOS培训部原创).docx编程资料

    ### IOS中Key-Value Coding (KVC)的使用详解 #### 一、KVC简介 Key-Value Coding(简称KVC)是Objective-C框架提供的一个非常实用的功能,它允许我们以键值对的形式来访问对象的属性。通常情况下,我们通过调用...

    object c教程 pdf

    ### Object-C 教程知识点详解 #### 一、Object-C 概述 - **定义**:Object-C(常写作 Objective-C 或 Obj-C)是一种基于 C 语言的面向对象编程语言,它继承了 C 语言的基本特性,并在此基础上进行了扩展。 - **...

    【无限互联】iOS开发视频教程课件第四章Foundation框架课件

    ### Foundation框架知识点详解 #### 一、Foundation框架概述 **Foundation框架**是在iOS开发中扮演着核心角色的一个组件,它是构建iOS应用时不可或缺的一部分。Foundation框架由一系列的基础类构成,这些类提供了...

    iOS软件开发之详解剪贴板.pdf

    在iOS软件开发中,剪贴板是一个至关重要的概念,它允许开发者在不同的应用程序之间或同一应用内部实现数据的快速共享。iOS系统提供了多种内置控件,如`UITextView`、`UITextField`和`UIWebView`,它们已经集成了基本...

    IOS文件的简单读写实例详解

    IOS文件的简单读写实例详解 数组(可变与不可变)和字典(可变与不可变)中元素对象的类型,必须是NSString,NSArray,NSDictionary,NSData,否则不能直接写入文件 #pragma mark---NSString的写入与读取--- //1:获取路径...

    Object C语言教程及案例.docx

    Objective-C 最初由 Stepstone 公司开发,并被苹果公司采用为 macOS 和 iOS 系统的主要开发语言之一。Objective-C 的语法结合了 C 语言的基础和 Smalltalk 面向对象的特性,使得它既强大又灵活。 #### 二、Hello ...

    ios 面试题

    ### iOS面试题详解 #### 一、Objective-C内存管理机制 **引用计数机制:**Objective-C中的内存管理主要依赖于引用计数机制。每个对象都有一个引用计数,记录了有多少其他对象引用它。当对象被创建时,它的引用计数...

    Using Swift with Cocoa and Objective-C中文

    ### 使用Swift与Cocoa及Objective-C的互操作性详解 #### 开始 Swift作为一种现代、高效的语言,在苹果的生态系统中迅速崛起,成为iOS、macOS、watchOS和tvOS开发的首选语言。Swift的设计旨在与现有的Cocoa和...

    Objective-C 语言基础语法简介

    ### Objective-C 语言基础语法详解 #### 一、Objective-C 概述 Objective-C(简称 OC)是一种在 C 语言的基础上增加了面向对象特性的编程语言。由于其强大的功能和灵活性,Objective-C 成为了开发 iOS 和 macOS ...

    oc数组知识点

    ### OC数组知识点详解 在Objective-C(简称OC)编程中,数组是一种常用的数据结构,用于存储和管理一组相同类型的对象。OC提供了两种主要的数组类型:`...掌握这些知识点对于高效地使用Objective-C进行开发至关重要。

Global site tag (gtag.js) - Google Analytics