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後綴的也可

以導入

這裏寫圖片描述

鏈接:把項目中所有相關聯的.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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章