国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > c語言指針詳解,學(xué)霸課堂記錄

c語言指針詳解,學(xué)霸課堂記錄 時(shí)間:2018-08-22      來源:未知

指針

指針常量:和地址常量相同 指針變量:用來存儲(chǔ)指針常量

指針:通常將指針常量和指針變量統(tǒng)稱為指針

以字節(jié)為單位將內(nèi)存進(jìn)行劃分,沒一個(gè)字節(jié)的空間都有一個(gè)地址編號(hào)首地址:某一段空間的 第一個(gè)地址編號(hào)

指針永遠(yuǎn)為4個(gè)字節(jié)指針的一般形式:

數(shù)據(jù)類型 *指針變量名例如:int a = 10;

int *p =&a;

p:存儲(chǔ)a這段空間首地址的變量 &a:a這段空間的首地址取地址符:&

取值符號(hào):*

取值符號(hào)和取地址符互為逆運(yùn)算初始化: int *p;

野指針:指針隨機(jī)指向某一段空間; 操作野指針可能會(huì)出現(xiàn)段錯(cuò)誤int *p=NULL;

空指針:指針指向地址編號(hào)為0的那一段空間。 操作空指針一定會(huì)出現(xiàn)段錯(cuò)誤如何調(diào)試段錯(cuò)誤

gdb調(diào)試工具

gcc -g 文件名.c gdb ./a.out

r(run)執(zhí)行文件

q退出指針運(yùn)算

p+1:會(huì)發(fā)生指針偏移,偏移的是所指向數(shù)據(jù)的數(shù)據(jù)類型p++ ++p p p

p>q:一般情況下運(yùn)用在某一段連續(xù)的空間

p-q:一般情況下也是運(yùn)用在某一段連續(xù)的空間才有意義

查詢內(nèi)存的保存形式(大端存儲(chǔ)或小端存儲(chǔ)) #include

int main(int argc ,congst char *argv[] )

{

int a = 0x12345678; int *p = &a;

printf("%#d\n",(char)*p); return 0;

}

輸出:0x78 說明計(jì)算機(jī)內(nèi)存是小端存儲(chǔ)。

指針和數(shù)組的關(guān)系

int a[3] ={1,2,3}; 數(shù)組名:

a: 1、代表整個(gè)數(shù)組

2、數(shù)組名是一個(gè)地址常量,是數(shù)組所在內(nèi)存空間的首地址

一級(jí)數(shù)組內(nèi)部關(guān)系:

int a[3]={1,2,3};

a = &a[0]; a+1=&a[0]+1=&a[1];

*(a+1)=*(&a[1])=a[1];

結(jié)論: *(a+n)= a[n];

一維數(shù)組和一級(jí)指針的關(guān)系int *p=a; p+1=a+1=&a[0]+1=&a[1];

*(p+1)=*(a+1)=*(&a[0]+1)=*(&a[1])=a[1];

*(p+1)=p[1];

結(jié)論:*(p+n)=*(a+n)=a[n]=p[n];

二維數(shù)組內(nèi)部關(guān)系

int a[2][3]={{1,2,3},{4,5,6}};

a=&a[0]; a+1=&a[0]+1=&a[1];

*(a+1)=*(&a[0]+1)=*(&a[1])=a[1]

將a[1]看做一個(gè)一維數(shù)組的數(shù)組名a[1] = &a[1][0]

a[1] + 1 = &a[1][0] + 1 = &a[1][1]

*(a[1] + 1) = *(&a[1][0] + 1) = *(&a[1][1])

*(a[1] + 1) = a[1][1]

*(*(a + 1) + 1) = a[1][1]

結(jié)論: *(*(a + i) + j) = a[i][j]

二維數(shù)組和數(shù)組指針的關(guān)系

int a[2][3];

int (*p)[3]=a;

p + 1 = a + 1 = (&a[0] + 1) = &a[1]

*(p + 1) = *(a + 1) = *(&a[0] + 1) = *(&a[1]) = a[1] = p[1] p[1] + 1= a[1] + 1 = &a[1][0] + 1 = &a[1][1]

*(p[1] + 1) = *(a[1] + 1) = *(&a[1][0] + 1) = *(&a[1][1])

*(p[1] +1) = *(a[1] + 1) = a[1][1]

結(jié)論:*(*(p+i)+j)=*(*(a+i)+j)=a[i][j]=p[i][j]

#include int main()

{

int a[5]={1,2,3,4,5};

int *ptr1=(int *)(&a+1); int *ptr2=(int *)((int)a+1);

printf("%x,%x",ptr1[-1],*ptr2); return 0;

}

輸出結(jié)果:5,2000000

字符指針

字符指針可以用來接受字符串,其實(shí)是接收字符串的首地址,但是不可以通過*的方式去修改,否則會(huì)發(fā)生段錯(cuò)誤。

指針習(xí)題

程序:

 

輸出:

 

上一篇:數(shù)組怎么用?學(xué)霸告訴你怎么用數(shù)組

下一篇:嵌入式之Android移植學(xué)習(xí)筆記

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部