欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

C語(yǔ)言中指針如何使用

C語(yǔ)言中指針如何使用,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

成都創(chuàng)新互聯(lián)主營(yíng)鹽津網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開(kāi)發(fā),鹽津h5成都微信小程序搭建,鹽津網(wǎng)站營(yíng)銷推廣歡迎鹽津等地區(qū)企業(yè)咨詢

一、指針的大小

二、野指針和空指針

#include <stdio.h>int main(void){int a = 6;int* p;p = a;//把a(bǔ)的值賦給指針變量p,p為野指針,這樣做不會(huì)出現(xiàn)啥問(wèn)題,但是沒(méi)什么意義 p = 0x456;//為指針變量p賦值,p為野指針,這樣做不會(huì)出現(xiàn)啥問(wèn)題,但是沒(méi)什么意義 *p = 100;//操作野指針指向未知區(qū)域,內(nèi)存會(huì)出問(wèn)題,報(bào)錯(cuò)。return 0;}

但是,野指針和有效指針變量保存的都是數(shù)值,為了標(biāo)志此指針變量沒(méi)有指向任何變量(空閑可用),C語(yǔ)言中,可以把NULL賦值給此指針,這樣就標(biāo)志此指針為空指針,沒(méi)有任何指針。

int* p = NULL;

說(shuō)明:野指針指向一個(gè)未知的空間,程序中允許存在野指針。操作系統(tǒng)將0到255作為系統(tǒng)占用不允許訪問(wèn)操作,操作野指針對(duì)應(yīng)的內(nèi)存空間可能會(huì)報(bào)錯(cuò)。

#include <stdio.h>int main(void){//空指針是指內(nèi)存地址編號(hào)為0的空間int* p = NULL;//操作空指針對(duì)應(yīng)的空間一定會(huì)報(bào)錯(cuò) *p = 6; //這樣寫(xiě)會(huì)報(bào)錯(cuò)printf("%d\n", *p); return 0; }

三、萬(wàn)能指針void*

void*指針可以指向任意變量的內(nèi)存空間:

#include <stdio.h>int main(void){//void* p = NULL;void* p;int a = 6;p = (void*)&a; //指向變量時(shí)最好轉(zhuǎn)換為void* //使用指針變量指向內(nèi)存時(shí),轉(zhuǎn)換為int**((int*)p) = 10; //把a(bǔ)的值修改為10             //在通過(guò)萬(wàn)能指針修改變量的值時(shí),需要找到變量對(duì)應(yīng)的指針類型。//printf("%p\n", p);printf("a = %d\n", a); return 0;}

程序執(zhí)行結(jié)果:

萬(wàn)能指針可以接收任意類型變量的內(nèi)存地址。

void* p = &a;

四、const修飾的指針變量

(1)const修飾指針類型

const int* p = &a;

這種情況:可以修改指針變量的值,不可以修改指針指向的內(nèi)存空間的值。

#include <stdio.h>int main(void){int a = 3;int b = 6;const int* p = &a; //p1的初始值是a的地址p = &b; //把b的地址賦給p1,即改變p1的值(這是可行的)*p = 15; //報(bào)錯(cuò),提示表達(dá)式必須是可修改的左值,因?yàn)椴豢梢孕薷闹羔樦赶虻膬?nèi)存空間的值(a的值)。printf("%p\n", p); //打印出的p1的值是b的地址,即可以修改指針變量的值。 return 0;}

(2)const修飾指針變量

int* const p = &a;

這種情況:可以修改指針指向的內(nèi)存空間的值,不可以修改指針變量的值。

#include <stdio.h>int main(void){int a = 3;int b = 6; int* const p = &a;*p = 100;p = &b;//報(bào)錯(cuò),提示:表達(dá)式必須是可修改的左值。即不可以修改指針變量的值 printf("%d\n", a);//打印出的a的值為100,即可以修改指針指向的內(nèi)存空間的值 return 0;}

(3)const修飾指針變量和指針類型

const int* const p = &a;

我們知道在這種情況下,既不可以修改指針指向的內(nèi)存空間的值,也不可以修改指針變量的值。但是我們?nèi)阅芡ㄟ^(guò)二級(jí)指針來(lái)修改指針指向的內(nèi)存空間的值和指針變量的值。

#include <stdio.h>int main(void){int a = 2;int b = 6; const int* const p = &a;int** pp = &p; **pp = 100;  //把100賦值給a,即通過(guò)二級(jí)指針可以修改a的值,const不起作用了printf("%d\n", *p); //打印出的a的值為100 *pp = &b;  //把b的地址賦值給p,通過(guò)二級(jí)指針可以改變p的值,const不起作用了printf("%d\n", *p);//打印出的是b的值,即6 return 0;}

這也說(shuō)明了const存在一定的不安全性。

五、指針的加法運(yùn)算

(1)指針計(jì)算不是簡(jiǎn)單的整數(shù)相加。

(2)如果是一個(gè)int*,+1的結(jié)果是增加一個(gè)int的大小。

(3)如果是一個(gè)char*,+1的結(jié)果是增加一個(gè)char的大小。

指針的減法運(yùn)算是類似的,很容易理解。

看完上述內(nèi)容,你們掌握C語(yǔ)言中指針如何使用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前標(biāo)題:C語(yǔ)言中指針如何使用
文章源于:http://chinadenli.net/article44/jioehe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、靜態(tài)網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)公司網(wǎng)站排名面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)