#import #import "myfunction.h"
// 巨集後面不要加分號
#define kimagewidth 200
#define kimageheight 200
// 有引數的巨集
#define kmax(a, b) a > b ? a : b
// 加上括號
#define kmul(a, b) ((a) * (b))
#define android 1
// 如果之前定義過巨集android
#ifdef android
// 如多定義過, 則編譯這段**
#define kwidth 400
#else
// 否則編譯else下的**
#define kwidth 320
// 條件編譯結束
#endif
// 如果沒有定義android
#ifndef android
// 則執行這段**
#define kheight 480
#else
#define kheight 800
// 條件編譯結束
#endif
#if ios7
// **1
#define state 20
#else
// **2
#define state 0
#endif
int main(int argc, const char * argv) ;
myllanguage language2 = ;
myllanguage language3 = ;
myllanguage language4 = ;
myllanguage language5 = ;
// 定義指標變數(需要注意的是型別名與初始值)
myllanguage *p1 = &language1;
// p1所佔空間大小: 8個位元組
// *p1能取出什麼樣的資料--->*p1-->*&language1-->language1
// 結構體指標特有的操作方式, 需要用別的操作符-->
char *str = (*p1).name;
str = p1->name;
printf("%s\n", str);
printstruct(p1);
cpoint m = ;
cpoint n =;
cpoint * pp = &m;
cpoint * ppp = &n;
printf("%.2f\n", sqrt((pp->x - ppp->x) *(pp->x - ppp->x) + (pp->y - ppp->y) * (pp->y - ppp->y)));
// 定義乙個結構體陣列
myllanguage languages[5] = ;
// 定義乙個結構體指標用來儲存結構體陣列的首位址
myllanguage *p = languages;
// 需要用->操作符
printf("%s\n", (p + 1)->type);
printf("%s\n", (p + 2)->name);
printf("%s\n", &((p + 2)->name)[1]);
printf("%s\n", (p + 2)->name + 1);
printlangguages(languages, 5);
bubblesort(languages, 5);
printlangguages(languages, 5);
// 巨集
printf("%d\n", kimagewidth);
// 加法
printf("%d\n", kmax(3, 5));
// 乘法
printf("%d\n", kmul(3, 2 + 3));
// 可以用在陣列
int array[kimagewidth] = ;
printf("%d\n", kwidth);
printf("%d\n", kheight);
student stu = ;
student *p =&stu;
p->name[0] = 'l';
p->name[3] = '_';
printf("%s\n",p->name);
return 0;
}
#import // 定義乙個結構體
struct language ;
typedef struct language myllanguage;
struct cpoint ;
typedef struct cpoint cpoint;
struct student ;
typedef struct student student;
void printstruct(myllanguage * l);
void printlangguages(myllanguage * arr, int count);
void bubblesort(myllanguage *arr, int count);
#import "myfunction.h"
void printstruct(myllanguage * l)
void printlangguages(myllanguage * arr, int count)
}void swap(myllanguage *l1, myllanguage *l2)
void bubblesort(myllanguage *arr, int count)}}
}
C語言高階指標 1
c語言的指標是c語言這門語言的精華所在,當然也是讓很多人詬病的地方。指標是什麼?有這麼一句話 對於錘子來說,一切都是釘子。那麼換句話講指標,即 對於指標來說,一切都是位址 記憶體是由乙個個記憶體單元構成的,每個記憶體單元都有自己的位址。而指標就是用來存放這些位址的。凡是可以用指標來儲存的變數,在指標...
c語言高階 指標概述
1 指標也是一種變數,占有記憶體空間,儲存記憶體位址 2 p操作記憶體 3 指標變數和它指向的記憶體塊是兩個不同的概念 char getstr81 void main 常見錯誤 直接向空指標中拷貝資料 沒有事先分配記憶體 char p1 null strcpy p1,abcdefg 報錯,記憶體非法...
c語言指標高階(二)
首先這裡強調乙個問題就是假設我現在知道乙個記憶體位址0xaa11 我怎樣將這個位址直接給乙個指標呢?首先這樣是沒有語法錯誤的 確實也是這樣定義的 但是位址我們是不能隨便規定的 這個主要用於程式開發中我們向特定的位址 我們已知的位址 去寫入資料 例如 通過i2c介面傳送到mcu乙個位址資料 unsig...