sp 短信服務商
tencent 騰訊 早期叫OICQ 之前騰訊是最大的sp
bat 三大巨頭 百度 阿里 騰訊
36kr.com 發佈所有it行業的信息
code review 代碼審覈
python 後臺腳本語言
週報:自我總結,學習的情況還有建議
mac系統的底層是unix
unix 系統(70年誕生)的三個分支 :sco unix , linux (發佈軟件必須提供源代碼), BSD
c語言72年誕生
76年創建的蘋果公司 84--96 喬布斯是不在蘋果公司的 這12年做了兩件事,收購了皮克斯公司,創立了電腦公司NEXT . (next step 操作系統 ,內核是BSD) 但是現在的蘋果系統現在的內核是XNU (x is not a UNIX).
蘋果公司的市場是封閉 但是技術是開源的
語言的發展 BCPL—B ——NewB ——C
c語言:
通過bundle identifier 來標識程序
char是最小的整型
float 小數位數是六位 double 是15位
ASC
所有運算符的優先級最高的是括號
代碼規範:雙目運算加空格 逗號後面加空格
int a=100;
a+ +;
a=a+1;
a++的效率高很多
R 0--255
G 0--255
B 0—255
0,0,0是黑色 255,255,255是白色
expect 期望
expression 表達式
C語言標準 c89/c99裏面沒有輸入輸出的
Printf不是c語言的標準,是添加的庫函數。例如#include<stdio.h>
%d======%i
\\ 輸出\
%% 輸出%
控制檯調試窗口快捷鍵command+ shif+y
2014/7/30
主要講 if switch
c語言中非0即爲真
注意邏輯與和邏輯或的短路現象:
與: 當前面的條件不符合時不會再去計算後面的條件
或: 當第一個條件符合時不會再去計算後面的條件
條件分支的級聯 嵌套
char a = '\0';
浮點數是無法進行相等判斷的。
system("say shabi");//語言提示shabi mac系統獨有的系統命令 需要倒入頭文件 #include <stdlib.h>
switch(整型表達式){
case 整型常量表達式 :
break;
}
如果case裏面定義變量就需要用{}
按住commd+alt+[或者]拖動代碼移動
枚舉:就是整型常量 而且數值是自增的,第一個設定了後會根據這個值自增。
僞隨機數:rand()
srand()種子
真隨機數:arc4random() 返回無符號的整型unsigned int 輸出用%u
隨機數%(b-a+1)+a 任意範圍隨機數
當判斷條件比較多時可用到break
break 用於跳出整個循環
continue (待續)結束本次循環
斐波那契數列 1 1 2 3 5 8 13 21 34 ……unsigned int 0
pow()
2014/8/1
數組的名字無法修改。是個常量
sizeof() 是個運算符 是關鍵字 類型 long unsuigned
代碼規範的作用:代碼整潔,降低溝通成本,避免低級錯誤。
2014/8/4
//presentation
//Introduction 1 say hi 2 self-introduction 3 主題
//Body 1 content1 ……
//1 eye contact 2 speak 3 body language 4 自信 5 practice
//conclusion 1 summary 2 thanks 3 Q & A
陷阱庫-----第一個單詞: redefinition 重定義
c99 中對數組定義可以用變量,但是不可以進行初始化。例:int x=20;int array[x];
%g 輸出float時將後面的0都去掉
宏:#define ,預處理指令,不能加分號結束,不會產生代碼
#__counter__ 產生不重複的數字
#__NSX_PASTE__
宏常量 例:# define PI 3.14
帶參數的宏 例:#define MAXVALUE(A, B) ((A) > (B) ? (A) : (B))
複合賦值
int c = ({
int result = a > b ? a : b;
result;
});
printf("%d\n", c);
__typeof__(A) 取出A 的類型
相對安全的宏:(如果參數時表達式會出現多次計算)
#define MAXVALUE(A, B) ({__typeof__(A) __a = (A); __typeof__(B) __b = (B); __a > __b ? __a : __b; })
函數不寫返回值默認時int類型的。
2014/8/5
// 插入排序
int array[] = {3, 2, 7, 9, 5, 4, 6, 1};
int count = sizeof(array) / sizeof(array[0]);
for (int i = 1; i < count ; i++) {
int j = i ;
int temp = array[j];
for (; j > 0 && temp < array[j - 1]; j--) {//j > 0 && temp < array[j - 1]不能前後調換,否則會導致數組越界。
array[j] = array[j - 1];
}
array[j] = temp;
}
for (int i = 0; i < count; i++) {
printf("%d\n", array[i]);
}
// 選擇排序,第一個和所有的比較,把最小的放在最前面
int array[] = {3, 2, 7, 9, 5, 4, 6, 1};
int count = sizeof(array) / sizeof(array[0]);
int min = 0;
for (int j = 0; j < count - 1; j ++) {
min = j;
for (int i = j; i < count; i ++) {
if (array[min] > array[i]) {
min = i;
}
}
if (min != j) {
int temp = array[j];
array[j] = array[min];
array[min] = temp;
}
}
for (int i = 0; i < count; i++) {
printf("%d\n", array[i]);
}
//冒泡排序
int a[] = {3,-9,32,77,63,-24,14,0,21,45};
int n = sizeof(a) / sizeof(a[0]), c = 1, t;
for (int i = 0; i < n - 1 && c; i++) {
c = 0;
for (int j = 0; j < n - 1 - i; j++) {
if (a[j] > a[j + 1]) {
c = 1;
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for (int i = 0; i < n; i++){
printf("%d\n", a[i]);
}
// 折半查找
int a[9] = {1, 2, 3, 4, 6, 8, 10, 11, 13};
int number = 10;
int len = sizeof(a) / sizeof(a[0]);
int star = 0, end = len - 1, mid = 0, index = 0;
while (star <= end){
mid = (star + end ) / 2;
if(number == a[mid]){
index = mid;
break;
}else if (number > a[mid]) {
star = mid + 1;
}else{
end = mid - 1;
}
}
printf("第%d個數是%d", index + 1, a[index]);
內存 : 棧內存 (自動)從高往低分配,從低往高存取
堆內存 (動態) 從低往高分配
全局靜態區 (靜態區)
常量區 (靜態區)
代碼區 (靜態區)
靜態區:應用程序一啓動,這些內存就分配好了。常量區和代碼區是不可改變的,全局靜態區是可以改變的。
棧內存的空間有8M左右
堆內存的空間相對大很多,只有堆內存可以進行垃圾回收。堆內存的訪問都是通過指針匿名訪問的。
堆內存的分配成本比較高,在申請的時候需要查表
格式化:畫格 分配地址
貪婪法
指針的類型是爲了知道通過指針尋址的類型的空間大小,影響指針加一減一跳轉多少個字節
a[0] 語法糖
a[0] ----à * ( a + 0)---à * ( 0 + a) ---à 0[a]
指針和數組最大的區別:1、指針可以賦值 數組名不可以 2、可以通過數組名求數組大小 指針不可以
異或 不同爲1 相同爲0
2014/8/7
const 常量 只能讀 不能寫
const int *p = &a ; 不能通過*p對a進行修改
static int s = 0;
1、一但被static修飾,s將不在棧內存,將放在全局靜態區,s將不會再隨着函數的結束而釋放。 並且靜態變量的初始化只會被執行一次。函數在編譯的時候會吧這行代碼拿到函數外面。所以多次調用這個函數s也不會被多次初始化。
2、靜態全局變量不會在當前文件以外的文件中訪問到
3、如果沒有手動初始化系統將自動初始化爲0
分爲:靜態全局變量,靜態局部變量
crash 衝突 ——指程序崩潰
一直申請內存不釋放 就會導致內存泄漏(leak)
指針去訪問一段已經釋放的內存這個指針就叫做野指針——5
malloc 動態分配內存
calloc 系統自動清理內存
realloc 重新分配內存
memset 初始化內存
typedef 爲現有類型創建⼀一個新的名字,或稱爲類型別名!
typedef 原類型 新類型 例如: typedef int Integer !
SDK : software development kit 軟件開發工具包
API : application program interface
函數指針 : 本身是個指針 ,用來存儲函數的地址。
回調函數 :
類的設計原則: 高內聚,低耦合 。高內聚是爲了保護外部使用的安全。將類封裝起來儘量,讓外面更多正確的使用這個功能。
Reference 指向 ref結尾的基本都是指針