[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十章 变量和数据类型

Part 1. 实例变量和属性

  • 目前的趋势是使用(_)作为实例变量名字的起始字符。
  • 在实现部分显式声明实例变量是私有的
    • 因此不能在子类中通过名字直接获取到实例变量的值。
    • 在子类中只能通过继承的存取方法获取实例变量的值。
  • 不必用@synthesize指令生成存取方法,只要在属性中声明即可。

Part 2. 全局变量

  • 小写的g作为全局变量的首字母:int gMoveNumber = 1;,也是外部变量。
  • 外部变量:被其他任何方法或函数访问和更改值的变量
  • 访问:加上关键字externextern int gMoveNumber;
    • 加上extern是对变量的声明,而不是定义。声明不会引起变量存储空间分配,而定义会。
    • 如果很多方法访问全局变量,那么在文件开始进行一次extern
    • 只有少数访问的话,最好在每个方法内部单独进行extern声明

Part 3. 静态变量

  • 定义成全局变量,但不是外部变量:除了特定类中的方法之外,再没有其他方法需要访问这个特定的变量:static int gGlobalVar = 0;:位于这条语句之后的方法或函数都可以访问gGlobalVar的值,而其他文件中的方法和函数都不行。

Part 4. 枚举数据类型

  • 枚举类型:提供了一种方法,能将整数值和有象征意义的名称对应起来。

    • 若需要更改这个整数的值,只能在定义枚举的地方改。
    • 例子:enum direction {up, down, left = 10, right};
    • 元素序列的增加,整数值+1,以此类推。

Part 5. typedef语句

typedef:改变数据类型的名称

typedef int Counter;
Counter j,n;
  • 增加了变量定义的可读性,清晰地看出这些变量在程序中的使用目的。

Part 6. 数据类型转换

不同类型的数据类型运算:

  • 如果其中一个操作数是long double,double,float型,结果也是long double,double,float型。
  • 如果其中一个操作数是Bool,char,short int, bit field或枚举类型,则全部转换为int型。
  • 如果其中一个操作数是long long int, long int型,另一个操作数转换为long long int, long int型,则结果也是long long int, long int型。
  • 两个操作数均为int型,则结果也是int型。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 15:35:12

[学习笔记—Objective-C]《Objective-C 程序设计 第6版》第十章 变量和数据类型的相关文章

JavaScript高级程序设计学习笔记第六章--面向对象程序设计

1.ECMAScript没有类的概念,ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值.对象或者函数.”,有点类似于散列表 2.ECMAScript 中有两种属性:数据属性和访问器属性. 数据属性: [[Configurable]]:表示能否通过 delete 删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性. [[Enumerable]]:表示能否通过 for-in 循环返回属性. [[Writable]]:表示能否修改属性的值. [[Valu

JavaScript学习笔记八:面向对象的程序设计

1. ECMA-262把对象定义为:无序属性的集合,其属性可以包含基本值,对象和函数.每个对象都是基于一个引用类型创建的. 2. 属性有两种:数据属性和访问器属性,其中访问器属性不能直接定义,必须使用Object.defineProperty()来定义. 3. 任何函数,只要通过new操作符来调用,那它就可以作为构造函数. 4. 原型:无论什么时候,只要创建了一个新函数,就会根据一组特定的规则为该函数创建一个prototype属性,这个属性指向函数的原型对象. 这个连接存在于实例与构造函数的原型

[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第九章 内存管理

内存管理: 确保在需要的时候分配内存,在程序运行结束时释放占用的内存 如果只分配内存而不释放内存,则会发生内存泄漏(leak memory),程序的内存占用量不断增加,最终会被耗尽并导致程序崩溃. 不要使用任何刚释放的内存,否则可能误用陈旧的数据,如果内存已经加载了其他数据,将会破坏这些新数据. 9.1 对象生命周期 对象的生命周期: 诞生:通过alloc或new方法实现 生存:接受消息并执行操作 交友:通过复合以及向方法传递函数 死去:被释放掉 9.11 引用计数 关于引用计数的操作: 增加对

python学习笔记(22)--漫画生成html最终版

说明(2017.3.14): 1. 在主文件夹生成一个main.html作为目录 2. 在每个子文件夹生成一个index.html作为看图网页 3. 通过python批量生成html网页,js配合进行遍历输出a链接 4. 生成一个booklist.js文件,存放目录数组,不然字符串不能与数组连接.这个数组是通过字符串伪装出来的,遍历数组,每个元素加上引号和逗号,去掉最后一个逗号,最后两边加上括号,var赋值就可以了. 5. 效果还不错,可以作为本地小黄网了! 1 #!/usr/bin/pytho

【学习笔记】 深入理解Linux内核第三版 —— 第三章 进程

何为进程 进程(分享资源 单位)/线程(执行的单位)/轻量级进程(共享部分资源) Linux中线程通过pthead 标准库实现,其中存在实现轻量级进程的方法,方法也可针对线程组执行. 静态:进程如何描述 进程描述符:task_struct数据类型 进程与进程描述符一一对应.进程描述符指针指向进程描述符地址,内核由此来引用进程. PID(process id)可用来标识进程(linux维护pidbitmap-array位图来管理分配PID),同一个线程组的线程使用相同的PID(与第一个线程的值相同

python学习笔记(11)-语法要求(缩进、标识符、变量)

本节点标题1.语法要求1.1.缩进规范1.2.变量标识符规范2.变量2.1.变量的赋值是存放在内存空间中,再从内存空间获取2.2.变量赋值的时候,若变量名在内存中没有的话就等于赋一个新的变量,若变量名已在内存中,则是重新改写这个变量2.3.变量的赋值是指向内存地址,变量1赋值变量2,变量1重新赋值后不改变变量2的值,因为变量1重新赋值后内存地址改变,而没有重新赋值的变量2内存地址不变.2.4.查看变量的内存地址,id()2.5.python虚拟机跟操作系统打交道,它对python做了优化,如果变

MiZ702学习笔记9——XADC采集片上数据PS版

这次借助zynq的内嵌的XADC来采集zynq内部的一些参数: •VCCINT:内部PL核心电压 •VCCAUX:辅助PL电压 •VREFP:XADC正参考电压 •VREFN:XADC负参考电压 •VCCBram:PL BRAM电压 •VCCPInt:PS内部核心电压 •VCCPAux:PS辅助电压 •VCCDdr:DDR RAM的工作电压 这次这个程序的开发流程和之前讲的别无二致,希望大家能够完全的熟悉这个流程~~ 还是和往常一样,新建一个Block Design,并且向其中添加zynq核以及

[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十二章 类别

12.1 创建类别 类别(category)是一种为现有的类添加新方法的方式 例:获取字符串的长度并存入NSDictionary字典中 不使用类别的方式: NSNumber *number; number = [NSNumber numberWithUnsignedInt: [string length]]; // ... do something with number 使用类别的方式: 类别的声明: @interface NSString (NumberConvenience) - (NSN

[学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十一章 属性

11.1 使用属性值 @property float rainHandling; //表明此类具有float类型的属性,其名称为rainHandling 注意:属性的名称不必与实例变量名称同样. @synthesize rainHandling; //表示创建了该属性的訪问代码 注意:使用属性后,能够不声明实例变量.编译器会声明. 有两个地方能够加入实例变量声明: 头文件:让子类直接通过属性訪问变量 实现文件:变量仅仅属于当前类 点表达式: 点表达式出如今(=)的左边:setter方法 点表达式