其他语言特性

作者:追风剑情 发布于:2019-2-27 10:37 分类:Objective-C

一、复合字面量

创建struct date类型的结构,并且赋上一些初始值
theDate = (struct date) { .month = 7, .day = 2, .year = 2014 };

还可以定义结构之外的其他类型
intPtr = (int [100]) { [0] = 1, [50] = 50, [99] = 99 };

二、goto语句

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // 跳转到out_of_data标签
        goto out_of_data;
        NSLog(@"start");
        
        // 定义out_of_data标签
        out_of_data:
        NSLog(@"Unexpected end of data.");
    }
    return 0;
}


三、空语句

只有一个分号的语句
例如:
读取终端输入的所有字符
while ( (*text++ = getchars()) != '' )
  ;

四、逗号运算符

例如:
for ( i = 0, j = 100; i != 10; ++i, j-=10)

五、sizeof运算符

      sizeof运算符返回的是指定项的字节大小。sizeof运算符的参数可以是变量、数组名称、基本数据类型名称、对象、派生数据类型名称或表达式。
示例

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        struct date {
            int month;
            int day;
            int year;
        } theDate;
        
        int count = 80;
        int *intPtr = &count;
        
        // int类型所在内存大小
        NSLog(@"sizeof(int)=%i", sizeof(int));
        // 结构所在内存大小
        NSLog(@"sizeof(theDate)=%i", sizeof(theDate));
        
        // 指针所占内存大小
        NSLog(@"sizeof(intPtr)=%i", sizeof(intPtr));
        // 指针值所占内存大小
        NSLog(@"sizeof(*intPtr)=%i", sizeof(*intPtr));
    }
    return 0;
}

运行测试
111.png

六、命令行参数

示例

// argc (argument count的简写)    参数个数
// *argv[] (argument vector的简写) 参数数组
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSLog(@"argc = %i", argc);
        for (int i = 0; i <= argc; i++)
            NSLog(@"argv[%i] = %s", i, argv[i]);
        
        //argv[0] 为启动程序的名称
        //argv[argc] 最后一个指针规定为空
    }
    return 0;
}

运行测试
111.png

七、工作原理
  1. 实例变量存储在结构中
  2. 对象变量实际上是指针
  3. 方法是函数,而消息表达式是函数调用
  4. id类型是通用指针类型



标签: Objective-C

Powered by emlog  蜀ICP备18021003号-1   sitemap

川公网安备 51019002001593号