-(IBAction) click{ [UIApplication shareApplication].applicationIconBadgeNumber=10;
}
就可以显示图标上数字
#import <QuarzCore/QuartzCore.h>
-(IBAction) 3d动画{
CATransition *ca=[CATransittion animation];
ca.type=@"cube"; //翻转动画
ca.type=@"rippleEffect"; //水波动画
ca.type=@"pageCurl";//翻页
ca.subtype=@"fromLeft";
ca.duration=1;
[self.view.layer addAnimation:ca forKey:nil];
}
main函数
int main(){
play();//调用语句
return 0;
}
printf(“第一个c语言函数”);
编译器 Xcode3 gcc
Xcode4 LLVM
指令 cc -c 文件名.c
链接:其实就是把我们的.O目标文件跟系统自带的函数库合并在一起,生成一个可执行的文件
指令 cc 文件名.o
双击打开 “终端”打开
指令 ./ a.out
cc 文件名.c直接会连续 编译 联接 把.o文件删掉
cc 文件名.o -o 连接文件名
cc -c 04\ 文件名.c 就是 04 文件名 否则就是两个文件
float height=1.78f
//如果用%d来输出会不预计的错误
//%f用来输出小数,默认是6位小数
printf(“身高是%f\n”,height);
//限制小数点后两位
printf(“身高是%.2f\n”,height);
int 类型还可以用%i %i=%d
char 类型可以用%c
常用格式符
1>%d %i整数(int)
2>%f 小数(floatdouble)
3>%c 字符(char)
//&是一个地址运算符,取得变量的地址
//%p用来输出地址
printf(“a的地址是:&p\n”,&a);
1.内存地址由大到小,优先分配地址比较大的字节给变量
2.变量越先定义,内存地址就越大
3.取得变量的地址:&变量名
4.输出地址:%p
没有初始化的值是乱七八糟的值,一定要初始化
阻塞式函数
scanf(“%d”,&num1);
scant函数必须是& 变量地址
一次性输入多个数值,并且以某些符号隔开
int num1,num2;
scanf(“%d#%d”,&num1,&num2);
prinf(“num1=%d,num2=%d\n”,num1,num2);
如果scanf参数中以空格隔开,实际输入可以空格,tab,回车
作为分隔符
scanf中不能写\n
a+=5+6+4; a=a+(5+6+4)
C语言没有boolean,0为假,非零为真
&&只要有一个不成立它的返回值就是0
||两个都不成立它的返回值就是0;
这个和java的不一样
int a=10
int b=10
int c=(a<5)&& (++b>=11);
a=10 b=10 c=0;
sizeof(boolean);
//三目运算符
int a=!100?9:89;
printf(“a=&d\n”,a);
int a=2;
if(a++>10)//a==3
{
printf(“A\n”);
}else if(a++>5){
printf(“B\n”);
}else if(a++>3){
printf(“C\n”);
}else{
printf(“D\n”);
}
printf(“a的值是%d\n”,a);//5
//如果要在if语句后面添加新变量,记得用括号括起来不要这样写(会报错,因为作用域不明确)
if(10>6)
int a=5;
printf(“%d\n”,a);
switch(c){
case ‘+’:
{
int sum=a+b;
printf(“和是%d\n”,sum);
break;
}
case ‘-’:{
int min=a-b;
printf(“差是%d\n”,minus);
break;
}
}
不能去掉花括号,不然sum的作用域不明确
如果要在case后面定义新的变量,必须用大括号{}包住
函数可以写成
test(){}只会有警告
如果没有写返回值 就是返回默认int类型
如果 int test(){}也可以这么写,因为C语言是弱语言
所以 main 函数可以直接写成 main(){}
C语言不允许两个函数名称一样
char test(){ return ‘A’;}
void test(int a,int b){
} 错!
函数不能嵌套定义 ,和java内函数区别
函数写在,main 函数,下面就要声明.
函数不能重复写,声明可以重复声明
如果有函数声明,没有函数的定义
1>编译可以通过,因为编译器只会检测语法合不合理,并不会函数有没有定义
2>链接报错,因为链接的时候会检测函数是否定义
include 1>拷贝文件的所有内容到include所在的位置
2>自定义的文件用””,系统自带的文件用<>
3>可以用相对路径和绝对路径
#include “haha/abc.txt”
#include “/User/XXX/XXX.txt”
txt后缀的也可
以导入
链接:把项目中所有相关联的.o目标文件,c语言函数库合并在一起,生成可执行的文件
cc XX.o main.o
\n是一个转义字符
\t tab键
\” 一个双引号
printf函数返回的字符串常量的字符数.并不是字数
1个汉字占据3个字符
int e=printf(“哈h\”\ta\n”);
系统根据主函数return 的值知道运行状况 return 0;正常运行
//二进制(0b或者0B开头)
int number=0B1100
//八进制(0开头)
int number=014;
//十六进制(0X或者0x开头)
int numer=0xc;
/用位与&运算符判断变量的奇偶性/
a&1==1;//奇数
a&1==0;//偶数
位运算 比较最后一位 是0还是1
/*
int 4个字节 %d
short 2个字节 %d
long 8个字节 %ld
long long 8个字节 %lld
signed
unsigned
*/
//long =long int
//long long int =long long
//short= short int
char name[]="it";
char name2[]={'o','k'};
printf("%s\n",name2);
\0的ASCII码值是0
char name[8]=”it”;
char name[8]={‘i’,’t’,’\0’};
char name[8]={‘i’,’t’,0};
char name[8]={‘i’,’t’};
都是字符串
char name[8]={‘i’,’t’};不算是一个字符串(只能说是一个字符数组)
printf(name);把数组传入,仅仅是一个警告.
strlen函数:计算字符串的长度
1.计算的是字符数,并不是字数(中文字符占3个位)
2.计算的字符不包括\0;3
3.从某个地址开始数字符的个数,直到遇到\0为止.
strlen函数声明在string.h文件中
int *p ;
int a=90;
//指针变量p指向变量a
p=&a;
*p=10;
printf(“%d\n”,a);//等于10;
指针变量p前面的int :指针变量p只能指向int类型的数据.
清空指针
p=0; 或者NULL,后面即使赋值就没有意义了
unsign long %zd
1.数组元素的访问方式
1>数组名[下标] ages[i]
2>指针变量名[下标] p[i]
3>*(p+i)
2.指针变量的+1,取决于指针的类型
int ^ 4
char *1
double *8
结构体
数组:只能由多个相同类型的数据构成
结构体:可以由多个不同类型的数据构成
1、定义结构体类型
struct Person{
int age;//年龄
double height;//身高
char *name;//姓名
};
2.根据结构体类型,定义结构体变量
struct Person p={20,1.55,”jack”};
p.age =30
结构体的成员是最大成员的倍数 补齐算法
指向函数的指针 void (*p)();
掌握:
1.看懂语法
2.定义指向函数的指针
double (p)(double,char ,int);
p=haha;
或者
double (p)(double,char ,int)
变量的作用域,可以分为 局部变量:默认初始值就是随机的
全局变量:默认初始值就是0
指针变量p将来指向Struts student类型的数据
struct Student stu={1,20};
指针变量p将来指向struct Student类型的数据
struct Student *p;
指针变量p指向了stu变量
p=&stu;
//第一种方式
printf(“age=%d,no=%d\n”,stu.age,stu.no);
//第二种方式
printf("age=%d,no=%d\n",(*p).age,(*p).no);
//第三种方式
printf(“age=%d,no=%d\n”,p->age,p->no);
所有的预处理指令都是以#开头。
宏-大写 或者常量用K开头
带参数的宏定义#define sum(v1,v2) v1+v2;