在过去的一段时间,我开始从C的一些简单声明到更复杂的学习直到我开始学习了Objective-C中的blocks。我花了很长的一段时间去理解他并且认识到一旦你理解它是怎样组织的并且是怎样产生的,你就再也不用在你需要声明blocks的时候去谷歌上找了。
 
   如果你想自己能够想都不用想的写出block,那就读下去!
 
   我强烈建议不要去读过去的RSS阅读器或者以后的阅读器。它大量的有色地解释一些东西而且似乎都未出现.
 
声明
   变量在C(在OC)中的声明
 
    声明的两个规则:
         1.说明变量的类型(编译器期望在内存当中找到)
         2.在合适的范围内起变量名
 
    让我们开始最简单的声明:
                                     int  a;
 
   这看起来像你曾经写过的第一行C代码.          
   int是一个基本类型,a是一个变量名或者标识符。
 
   为了阅读一个声明,你会从标识符开始,然后往右边一直读直到你不能然后开始往变量的左边。(我们会在下个部分来解释)
   在我们变量的右边没有任何东西所以我们可以直接了当的说:a 是一个int
 
    一个声明可以有一个基本类型并且在说明符的最左边。
 
    说明符可以被基本类型在创建派生类的时候用修饰符修改。以下是4个修饰符(3个来自于ANSI-C还有一个来自于Apple’s proposed extensionANSI-CANSI-C),它们分别是*,[],(), and ^.
   
 3种ANSI-C修饰符
    指针修饰符*
                                       int *a;
   基本类型一直是int且变量名为a。但是指针的修饰符 * 告诉我们它是一个指向int类型的int类型的指针。
     修饰符*总是在变量的左边。
 
    数组修饰符[ ]
                                       int a[ ];
    这里我们看出数组修饰符[ ] 它是一个int类型的数组用于替代简单的int.这可以在数组的维数完成例如int[10]。
     [ ]修饰符总是在修改变量的右侧。
 
     方法修饰符( )
                                       int f( );
     方法修饰符( )是在告诉我们f是一个返回值为int类型的方法。这个修饰符也能指定参数举个例子int f(long)。是一个参数为一个长整型的且返回值为int类型的。
       ( )修饰符总是在修改变量的右侧。
 
     组合修饰符
     1.指针和数组
      
      修饰符能被组合在一起去创造一个复合的变量类型。类似的如数学运算的优先级一样排列。
[ ]和( )的优先级高于*(和^)。自从两个高优先级的修饰符被写在变量的右侧之后,当我们读混合的声明时,总是从标识符和直接尽可能长时间然后离开当你到达说明符结束或关闭括号。
                                                  int *a[ ]
 
      或者你能写上小括号以提高可靠性。
                                                  int *(a[ ])
 
    但是你也许会问,如果我想要一个指向整型数组的指针该怎么办?最好是让*的优先级低于[ ]的优先级,用括号去破坏原有的优先级。
    这里,a就是一个指向int类型的数组的指针了。
 
       2.数组和方法
     你不能有一个带方法的数组且方法不能返回一个数组或者方法。一个方法能将数组做为参数。
                                                   int f(int [10]);
    这里f是一个用一个带有10个元素的整型数组作为参数且返回值是一个整型的方法。
     
      3.指针和方法
                                                   int * f( );
                                                   int *( f( ) );
    上述两种情况都是一个返回Int类型的指针的方法。
    那如果你想要一个返回方法的指针该如何做?对,没错,答案是括号!
                                                   int (*f) ( );
    这里f就是一个返回方法的int类型的指针。 

从C到OCblocks语法的声明的更多相关文章

  1. JSP JSP工作原理 JSP语法 JSP声明 JSP注释 JSP指令 jsp九大隐式/内置对象

    1 什么是JSP   1)为什么说,Servlet是一个动态Web开发技术呢?     Servlet是基于服务端的一种动态交互技术,     HttpServletRequest表示客户端到服务端的 ...

  2. javascript语法之声明变量

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. 理解C语言中指针的声明以及复杂声明的语法

    昨天刚把<C程序设计语言>中"指针与数组"章节读完,最终把心中的疑惑彻底解开了.如今记录下我对指针声明的理解.顺便说下怎样在C语言中创建复杂声明以及读懂复杂声明. 本文 ...

  4. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  5. JSX语法简介

    React的核心机制之一就是可以在内存中创建虚拟的DOM元素.React利用虚拟DOM来减少对实际DOM的操作从而提升性能. JSX简介 JSX就是Javascript和XML结合的一种格式.Reac ...

  6. Objective-C 语法之 static 关键字

    转:http://www.apkbus.com/android-593-1.html 学习过Java 或者 C 语言的朋友应该很清楚static关键字吧?在某个类中声明一个static 静态变量, 其 ...

  7. JSP/Servlet基础语法

    相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp ...

  8. nodejs 基本类型和语法

    写在前面 今天想要查下Node的类型什么的知识,想要总结下,在Googol上看到一个文章,但是原始的链接不在了,在快照中把这篇文章拉出来,如果原作者有问题,请联系我! 该文章都是一些JS的基础,高手自 ...

  9. [Swift2.0系列]Defer/Guard 基础语法

    1.Defer Swift2.0中加入了defer新语法声明.defer译为延缓.推迟之意.那么在Swift2.0中它将被应用于什么位置呢?比如,读取某目录下的文件内容并处理数据,你需要首先定位到文件 ...

随机推荐

  1. PHP第八课 字符串拆分经常使用函数

    课程概要: 通过这节课可以对字符串进行主要的操作. 字符串知识点: 1.字符串的处理介绍 2.经常使用的字符串输出函数 3.经常使用的字符串格式化函数 4.字符串比較函数 5.正則表達式在字符串中的应 ...

  2. 数据库中的java.sql.Timestamp转换成Date

    查询数据库中的时间类型为 java.sql.Timestamp 保存在json中需要格式化 自定义工具类  DateJsonValueProcessor package com.rom.util; i ...

  3. 浅谈SaaS应用开发的难度

    近期做SaaS应用的非常多,这样的模式是未来的一种趋势,这样的模式的最大优点就是云计算的优点--节约资源.网上有非常多人觉得SaaS非常easy,就是一个多用户租赁模式.这样的认识也不能说不正确.由于 ...

  4. XP单机版安装金蝶K3的13.1版本号,金蝶K3Wise安装步骤,安装成功

    在我们安装金蝶K3时往往会出现各种报错.主要是由于我们的Windows Xp操作系统是Ghost版本号.或者是windows XP HOME或者是精简版,因此某些组件在系统里没有.导致我们安装金蝶K3 ...

  5. 一些.NET 项目中经常使用的类库

    Web自己主动化測试   Watin Selenium  Selenium git .net 集合类扩展实现C5 Subscriber/Publisher 模式 Rx Nats 防御式编程 断言库 流 ...

  6. python解压,压缩,以及存数据库的相关操作

    zipfile实现压缩整个目录和子目录 import os,shutil,zipfile,glob def dfs_get_zip_file(input_path,result): # files = ...

  7. 唯品会API网关设计与实践--转

    原文地址:https://609518.kuaizhan.com/86/70/p4108366952248f 刘璟宇Leo 唯品会资深研发工程师,在大型高性能分布式系统设计和开发方面有丰富的经验.目前 ...

  8. 你不知道的JavaScript博文参考书籍

    you don't know js系列书籍是谷歌地图开发人员编写,内容非常好,四卷已收集齐全. 笔者打包上传到了CSDN,下载地址: http://download.csdn.net/detail/r ...

  9. Caffe 激励层(Activation)分析

    Caffe_Activation 一般来说,激励层的输入输出尺寸一致,为非线性函数,完成非线性映射,从而能够拟合更为复杂的函数表达式激励层都派生于NeuronLayer: class XXXlayer ...

  10. php时间差方法

    /** * 时间差计算 * * @param Timestamp $time * @return String Time Elapsed */ function time2Units ($time,$ ...