本文介绍如何在Objective-C中操作数据。我们将使用数组、指针、字符串等。 数组是数据项的一个集合,这些数据项叫做元素,我们可以用一个数组索引来引用元素。例如,如果把数字存储在一个名为array的数组中,我们可以使用如下的一个索引数字来访问每个元素:array[0]引用第一个元素,array[l】引用第二个元素’,以此类推。如下的代码创建了一个拥有5个元素的数组,在array[0】中存储了一个值51,然后,显示该值:

<pre name="code" class="objc">#include <stdio.h>
int main()
{
int array[51];
array[0] = 51;
printf("array[0] is %i.\n", array[0]);
return 0;
}

指针是保存数据项在内存中的地址的特殊变量。我们可以使用&运算符把一个名为integer的变量的地址存储到指针中,如下所示:    pointer=&integer

然后,我们可以使用幸pointer像1F面这样来访问integer的值:

#include <stdio.h>
int main()
{
int integer, *pointer;
integer=1;
pointer=&integer;
*pointer=2;
printf("The value of the integer is: %i",*pointer) ;
return 0;
}

1.创建NS类对象    要创建以NS为前缀的任何类的对象,我们必须包含Ohjcctive-C Foundation头文件。如果要存Mac上使用Xco de,当创建一个项目的时候,应该确保在New Project页面上选中F'oundation选项。如果在Windows.Linux或UNIX中使用Objective-C,需要如下所示的一个名为GNUmakfile的makefile,它编译一个名为source.m的程序并且创建一个名为app(在Windows下是app.exe)的可执行应用程序:</span></p><pre
name="code" class="objc">include$(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME = app
app_08JC_FILES = source.m
include $(GNUSTEP_MAKEFILES)/tool . make

在Linux和UNIX中(不包括Windo;ws);我们也必须设置GNUstep环境如下的C shell中做到这点:

source <GNUstep root>/System/Library/

Makefiles/GNUstep.csh

并且我们在Bourne shell中像下面这样来做到这点:

   . <GNUstep root>/System/Library/

Makefiles/GNUstep.sh

在大多数UNIX系统中,<GNUste'p root>是/usr/lib/GNUstepo要运行makefile,只要转到带有该makefile的目录(GNUmakefile)并目.输入make,这会在名为obj的一个子目录中创建可执行应用程序。在这个例子中,我们可以通过输入./obj/app来运行该应用程序。

.2创建数组

    数组是元素的集合(元素可以是任何的Objetive-C类型),可以使用一一个索引值来访问该集合4在下面的任务中,我们声明了’一个拥有5个元素的数组,把值5 l赋给了第一个元素,即array【0】,然后显示该值。创建Objective-C数组

    1)创建一个名为array.m的新程序。

#import <stdio.h>
int main ()
{
int array[5];
array[0]=51;
printf("array[0] is %i.\n",array[0]);
return 0;
}

2)在array.m中输入中的代

码。这段代码创建了名为array的数组,并且

把array[0】设置为51。

    3)添加代码以显示array[0]中的值)

  4)保存array.m。

  5)运行array.m程序一应该看到如下的

array[0] is 51

3.初始化数组,

当声明数组的时候,我们可以通过把初始化值包含到花括号中,从而初始化数组中的元素的值:

#import <stdio.h>
int main ()
{
int array[5]=(92,73,86,57,98,89);
printf("The array is %i elements long.",sizeof(array/sizeof(int)));
printf("array[0] is %i.\n",array[0]);
return 0;
}

4.循环遍历数组

数组和循环血脉相连。数组保存数据的集合,循环允许我们迭代这样的数组集合,这是计算机所真正擅长做得事。且看下例`

 #improt <stdio.h>

 int main()
{
int student_index,score[5] ={92,73,57,98,89};
float sum=0;
for(student_index=0.sum=0;student_index<5;student_index++)
{
sum+=score[student_index];
}
printf("Ave score is %2.1f",sum/5);
return 0;
}

5.创建二维数组

到目前为止,我们都是使用一维数组,但是,也是可以创建二维数组,既然我们可以想array[elemnet_number]这样访问一个一维数组  例如,如果有一个关于每个学生的三次测验分数的数组,并且想要得到三次测验的每一次的平均分,可以使用一个二维数组。我们使用花括号中的嵌套的列表来初始化for循环来遍历

 #improt <stdio.h>

 int main()

int test_index,student_index, scores[3][5] = { 92 , l3 , 57 * 98 , 89 }, { 88 , 76 , 23 , 9S , 72 }. { 94 , 82 . 63 , 99 , 94 } };

floot sum;

for(test_index=O; test_index < 3;test_index++)

{ for (student_index=0, sum=0;student_index< 5; student_index++)

{

sum+=scores[test_index][student_index];

}

printf("Average for test %i is %2.1f.\n",test_index+1,sum/5);}


returned 0;
}

6使用指针指针保存厂数据项存内存中的地址口我f通过在指针前加上~一个星号(*)来声明它

int integer, *polnter;

然后,可以使用&运算符来获取-一个变量杓j内存中的地址并将其赋给指针

integer =1:

inter I &integer;

再次使用星号,我们可以引用指针所指向的数据

*pointer= 2;

使用指针

创建一个名为pointers.m的新程序

#improt <stdio.h>

 int main()

 {

int integer,*pointer;

integer=1;

pointer=&integer;

*pointer=2;

printf("The vaule of the integer is :%i",*pointer);

return 0;

 }

运行结果:

The vaule of the integer is:2

7

使用指针数学运算

我们指向内存中前后连续的项,例如一个数组中的项,我们可以自增或自减指针来指向下一个或前一个项。例如:

如下实例打印一个数组中的,第一个数字,然后通过自增一个指针,打印出第二个数字:

8.交换指针和数组

在Objective-C中,数组名和指针可以以很多种方式相互交换,例如,我们可以创建一个数组,将数组的名称,赋给一个指针,且指针当作数组名称对待:

double valules[10];

double *pointer=values;

pointer[2]=3.14159;

运行结果

9.使用字符串

你可能认为Objective-C带有一个内置的字符串数据类型,就像是内置的字符串数据类型,就像是内置类型float和char一样,但是,事实并非如此。相反,Objective-C使用Foundation类NSString。

我们首先包含在Foundation类(这意味着必须在Windows/Linux和Unix中使用一个makefile)然后,可以创建类NSString的一个字符对象。和所有的Objective-C对象一样,我们获得了指向对象的一个个指针,并且可以像下面这样初始化字符串:

#include<Foundation/Foundation.h>

NSString *helloString=@"Hello there.“;

引文的文本之前的@符号表示我们要创建一个Objective-C样式的字符串,而不是一个默认的C样式的字符串,(Objective-C字符串中,C字符串构建了更多的功能。)

10使用枚举

Objective-C允许我们定义自己命名类型,这种类型叫做枚举类型,包括含了一周的每一天的名称,如下:

enum day

{

Sunday,

Monday,

Tuesday,

Wednesday,

Firday,

Saturday,

};

然后我们可以把这些值之一赋给该类型的一个变量:

enum day today=Friday;

Objective-C关于数据处理的更多相关文章

  1. Automake

    Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...

  2. python实战——文本挖掘+xgboost预测+数据处理+准确度计算整合版

    if __name__=="__main__": '''============================先导入数据============================= ...

  3. Netty:数据处理流程

    Netty作为异步的.事件驱动一个网络通信框架,使用它可以帮助我们快速开发高性能高可靠性的网络服务. 为了更好的使用Netty来解决开发中的问题,学习Netty是很有必要的. Netty现在主流有三个 ...

  4. 《Caffe下跑AlxNet之数据处理过程》

    环境:Windows 最近用Caffe跑了一下AlxNet网络,现在总结一下数据处理部分:(处理过的数据打包链接:http://pan.baidu.com/s/1sl8M5ad   密码:ph1y) ...

  5. 七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理

    第三天我们将学习Asp.Net中数据处理功能,了解数据访问层,EF,以及EF中常用的代码实现方式,创建数据访问层和数据入口,处理Post数据,以及数据验证等功能. 系列文章 七天学会ASP.NET M ...

  6. ajax的使用:例题、ajax的数据处理

    需要注意的是,调用的封装的数据库,和jQuery的保存地址 一.注册 (1)写文本框来进行用户名的验证 <input type="text" id="uid&quo ...

  7. geotrellis使用(三)geotrellis数据处理过程分析

    之前简单介绍了geotrellis的工作过程以及一个简单的demo,最近在此demo的基础上实现了SRTM DEM数据的实时分析以及高程实时处理,下面我就以我实现的上述功能为例,简单介绍一下geotr ...

  8. geotrellis使用(四)geotrellis数据处理部分细节

    前面写了几篇博客介绍了Geotrellis的简单使用,具体链接在文后,今天我主要介绍一下Geotrellis在数据处理的过程中需要注意的细节,或者一些简单的经验技巧以供参考. 一.直接操作本地Geot ...

  9. Web页面实现后台数据处理进度与剩余时间的显示

    1.页面后台代码添加如下属性: /// <summary> /// 总数 /// </summary> private double total { set { Session ...

  10. Asp.net 面向接口可扩展框架之数据处理模块及EntityFramework扩展和Dapper扩展(含干货)

    接口数据处理模块是什么意思呢?实际上很简单,就是使用面向接口的思想和方式来做数据处理. 还提到EntityFramework和Dapper,EntityFramework和Dapper是.net环境下 ...

随机推荐

  1. 反向生成hbm.xml

    选择数据库透视图 打开数据连接 打开刚刚创建的连接,然后打开用户名下的表 这个就是she用户下的表,我们选中要反向生成的表,可以多选,然后点击右键 点击Hibernate Reverse Engine ...

  2. nginx+lua+redis初体验

    1.下载nginx.lua.redis nginx下载地址 wget  http://nginx.org/download/nginx-1.8.0.tar.gz lua下载地址 wget http:/ ...

  3. Flex Alert的匿名回调函数如何得到正确的this

    Flex中经常使用Alert来弹出提示或确认窗口,为了方便省事,会直接用匿名函数作为回调,但有时如果要调用外部的this,你会发现匿名函数中的this无法指向外部父类,可以使用e.target获取pa ...

  4. redis学习(3)redis.conf配置文件详解

    # Redis 配置文件 # 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写) # # 1k =>  1000 bytes # 1kb ...

  5. mybatis-generator 代码自动生成工具

    今天来介绍下怎么用mybatis-gennerator插件自动生成mybatis所需要的dao.bean.mapper xml文件,这样我们可以节省一部分精力,把精力放在业务逻辑上. 之前看过很多文章 ...

  6. 学习练习 Java冒泡排序 二分查找法

    冒泡排序: // 冒泡排序 /* System.out.println("请输入要排序的个数:"); Scanner v = new Scanner(System.in); int ...

  7. XML Namespace 命名空间

    根据 Namespaces in XML W3C 推荐标准的定义,XML 命名空间 是由国际化资源标识符 (IRI) 标识的 XML 元素和属性集合:该集合通常称作 XML“词汇”. 定义 XML 命 ...

  8. WPF学习系列之七 (样式与行为)

    样式(Styles)是组织和重用格式化选项的重要工具.不是使用重复的标记填充XAML,以设置诸如边距.颜色及字体等细节,而可以创建一系列封装所有这些细节的样式.然后可以在需要之处通过一个属性应用样式. ...

  9. python常用内置函数

    Python所以内置函数如下: 下面列举一些常用的内置函数: chr()和ord() chr()将数字转换为对应的ascii码表字母 >>> r=chr(65) >>&g ...

  10. 【ITOO 2】使用ArrayList时的注意事项:去除多余的null值

    问题描述:在课表导入的时候,将数据从excel表里读出,然后将list批量插入到对应的课程表的数据表单中去,出现结果:当我们导入3条数据时,list.size()为3,但是实际上,list里面存在10 ...