C/C++知识点之iOS开发笔记系列-基础7(C语言特性)
小标 2018-12-03 来源 : 阅读 1202 评论 0

摘要:本文主要向大家介绍了C/C++知识点之iOS开发笔记系列-基础7(C语言特性),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之iOS开发笔记系列-基础7(C语言特性),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

Objective-C是C语言的扩展,因此,也具备很多C语言的基本特性,这里只罗列部分。

块(Blocks)
  块是对C语言的一种扩展,它并未作为标准ANSI C所定义的部分,而是Apple添加到语言中的。它看起来很像函数,可以给它传递参数,它也具有返回值,与函数不同的是,块定义在函数或方法内部,并能够访问在函数或者方法范围内块之外的任何变量。一般来说,它可以访问到这些变量但是不能修改它们的值,有一个特殊的块修改器(由块前面含有两个下划线的字符组成)能够修改块内变量的值。块本身也能够作为参数传递给函数或方法。
  块的其中一个优势在于能够让系统分配给其他处理器或应用的其他线程执行。
  块是以插入字符“^”开头为标识的。后面跟的一个括号标识块所需要的参数列表。比如:

^(void){
    ....
}//没有分号
//这个块不接受参数
//也可以将块赋值给变量,如:
int (^myBlock)(void)=
^(void){
  ...    return somevalue;
};//赋值结束,有分号

  块可以访问但是不能修改函数内块以外的变量,但是如果变量定义之前加了__block修改器,就可以了,比如函数内块以外的变量定义为

__block int foo=1;

 
结构
  除了数组之外,Objective-C还提供了另一种组合元素的工具,即结构。比如:

struct date
{
int month;
int day;
int year;
}
//
struct date today;//声明today变量为struct date类型
today.day=1;//点符号是处理结构变量的特殊语法,用于访问结构成员

  结构的初始化可以直接赋值,如:

struct date today={1,2,2001}//此时按顺序依次赋值
struct date today={1}//只赋给第一个元素
struct date today={.month=1,.day=2,.year=2001}//指定顺序赋值

  通常用typedef来改变结构体名称,使得在声明变量的时候不需要一直带着“struct”标识,比如:

struct CGPoint {
 CGFloat x;
 CGFloat y;
};
typedef struct CGPoint CGPoint;

//声明变量时不需要再写struct了
CGPoint p;

  下边的几种写法,也是合法的:

struct date 
{
...
} date1,date2;
//
struct date 
{
...
} date1={1,2,2001};
//
struct  //省略结构名称 
{
...
} date1={...};
//
struct 
{
...
} dates[10];//声明数组,元素为结构

 
指针
  指针的工作方式是间接寻址的,它本身的值是一个地址,表示它所指向的变量的内存地址,声明时,通过在变量名前类型之后加上星号,如int *intPtr;这样intPtr就不能再被直接赋给int类型的值,而是内存地址,比如intPtr=&someValue;。
  通过指针变量intPtr引用someValue的内容,可以使用间接寻址运算符(*),比如int x=*intPtr;
  指针除了指向基本数据类型之外,还可以指向复杂的数据类型,如结构

struct s{...};
struct s sValue;
struct s *sPtr;
//
sValue.property=1;
sPtr=&sValue;
(*sPtr).property=2;
sPtr->property=3;//这是结构指针的特殊运算符

  函数指针
  函数指针是指向函数的指针变量,此时需要知道函数返回值类型以及参数的数目和类型,比如要声明“指向返回int并且不带参数的函数的指针”,如下
int (*fnPtr) (void)
  *fnPtr两侧的括号是必须的,此后可以用:fnPtr=loopFunc;(loopFunc是一个返回int且不带参数的函数)。
  函数指针可以作为参数传递给其他函数,函数指针的另一个常见应用是建立分派表,函数本身不能保存在数组元素中,但是可以在数组中存储函数指针,就可以创建包含要调用的函数指针的表。
 
命令行参数
  程序运行时开始执行的位置是main函数,直到main函数执行完,控制权返回给系统。调用main函数时,系统向它传递两个参数,第一个是argc(argument count),是一个整型值,第二个是argv(argument vector),是一个字符指针数组,长度为argc+1。
int main (int argc, char *argv[]){...}
argv数组的第一个元素是执行程序的名称指针,如果系统中没有程序名称,则为空串,数组的其他项指向由启动程序执行的命令行所指的值。数组argv中的最后一个指针arbv[argc]规定为空。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved