一、复合字面量
创建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;
}
六、命令行参数
示例
// 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;
}
七、工作原理