0723-0802 C语言笔记(李明杰前8天)

-(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函数-prinf

阻塞式函数
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)

sizeOf函数

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后缀的也可

以导入

0723-0802 C语言笔记(李明杰前8天)_第1张图片

链接:把项目中所有相关联的.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);

0723-0802 C语言笔记(李明杰前8天)_第2张图片
\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;

你可能感兴趣的:(c语言基础)