c語言學習筆記二十三

2021-09-01 13:44:55 字數 2184 閱讀 3339

指標 佔4個位元組的儲存空間

概念把乙個變數所在的記憶體單元儲存在另乙個記憶體單元中,儲存單元的這個位址就是指標

示例**:

int i;

int *pi=&i;

指標的重新賦值

pi=&j;

改變指標所指向的整型變數的值

*pi =*pi+10;

指標初始化另乙個指標(兩指標必須為同一型別)

int *ptri;

ptri =pi;

可以進行強制型別轉換

char *pc;

int *pi;

pi=(int *)pc;

void指標常用於介面

示例**如下:

void func(void *pv)

int main(void)

指標的引數和返回型別

兩數交換值

int *swap(int *px,int *py)

int main(void)

指標與陣列

示例**:

int a[10];

int *pa=&a; #指向陣列首位址

pa++; #指向陣列的下乙個元素

*(pa+2)等價於p[2]

pa[-1]等價於a[0]

void func(int a[10]){}等價於void func(int *a){}

指標與限定符const

示例**:

const int *a; #const int型的指標,a所指記憶體單元不可改變

int const *a; #int型的const指標,a不允許改寫,*a可改寫

指向非const變數的指標/非const變數的位址,可以傳遞給指向const變數的指標

char c='a';

const char *pc=&c;

指向const變數的指標/const變數的位址,不可以傳遞給非const變數的指標

示例**(以下語名會編譯報錯)

const char c='a';

char *pc=&c;

注:使用const限定符,把變數宣告為唯讀,防止意外改寫資料

const char *pc="abcdef";

防止:char *pc="abcd";

*pc='a';

指標與結構體

示例**:

struct unit;

stuct unit u;

stuct unit *p=&u;

訪問結構體成員

(*p).c或p->c

(*p).num或p->num

指向指標的指標和指標陣列

指向指標的指標

int i;

int *pi=&i;

int **ppi=π

指標陣列

int *a[10];

int **pa=&a[0]

指向陣列的指標與多維陣列

int (*a)[10]

等價於typedef int *t;

t a[10];

int a[10]

int (*pa)[10]=&a;

(*pa)[0]等同於a[0]

pa[0][0]等同於a[0]

二給陣列

int a[5][10];

int (*pa)[10]=&a[0];

(*pa)[0]等同於a[0] #這個元素由10個int型別的數組成

pa[1][2]等同於a[1][2] #指標可以支援自增/賦值等運算

函式型別和函式指標型別

存放函式入口位址的指標,(位於.text段)稱為函式指標

示例**如下:

#include

void say_hello(const char *str)

void main(void)

函式型別

typedef int f(void);

f f,g;#函式宣告

f *e(void);

f *fp;#宣告乙個函式指標

不完全型別和複雜宣告

c語言的型別

1 函式型別

2 物件型別

標量型別

非標量型別(包含指標型別)

3 不完全型別

struct s;

union u;

char str;

struts s;

struts t;

python 學習筆記(二十三)

coding utf8 author liwei import re python正則的應用,math方法判斷正則是否匹配成功 print 正則簡單用例 text hello liwei is 25 if re.match r w s w s w s d text print ok else pri...

c語言學習筆記十三

結構體 示例 include int main void s s.a 1 s.b 2 s.c 3 s.d 4 printf u n sizeof s return 0 編譯 gcc test.c o 反彙編 objdump test 四個成員變數在棧上的排列 80483ed c6 44 24 14 ...

c語言學習筆記十三

結構體 示例 include int main void s s.a 1 s.b 2 s.c 3 s.d 4 printf u n sizeof s return 0 編譯 gcc test.c o 反彙編 objdump test 四個成員變數在棧上的排列 80483ed c6 44 24 14 ...