指標 佔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 ...