C語言 高階指標

2021-06-26 14:50:58 字數 2916 閱讀 7848

#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...