區(qū)別:1、表示的含義不同,“*p”表示此指針指向的內(nèi)存地址中存放的內(nèi)容,“p”表示一個(gè)指針變量的名字,指此指針變量所指向的內(nèi)存地址。2、輸出的格式不同,“*p”輸出的一般是一個(gè)和指針類(lèi)型一致的變量或者常量,“p”輸出的是一個(gè)16進(jìn)制數(shù), 輸出一個(gè)指針的地址。3、功能不同,“*p”是讓程序去那個(gè)地址取出數(shù)據(jù),“p”用于存放的是地址。
php入門(mén)到就業(yè)線上直播課:進(jìn)入學(xué)習(xí)
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調(diào)試工具:點(diǎn)擊使用
本教程操作環(huán)境:windows7系統(tǒng)、c99版本、Dell G3電腦。
理解C語(yǔ)言中的*p
、p
C語(yǔ)言中,*p 和p都常用在指針當(dāng)中表示一個(gè)指針變量。
想要利用指針,需先理解地址和數(shù)據(jù):你可以想象有很多盒子,每個(gè)盒子有對(duì)應(yīng)的號(hào)碼,那個(gè)號(hào)碼叫做“地址”,而盒子里放的東西叫做“數(shù)據(jù)”。
p是指針變量,用來(lái)存放地址,你可以認(rèn)為是上面所說(shuō)的盒子的號(hào)碼,“ * ”是解引用操作符,你可以把它理解成打開(kāi)盒子,p就是打開(kāi)p號(hào)盒子,取出里面的數(shù)據(jù)。
簡(jiǎn)單來(lái)說(shuō),你記住,p存放的是地址,而p是讓程序去那個(gè)地址取出數(shù)據(jù)。
在C 語(yǔ)言中*號(hào)有三個(gè)用途,分別是:
乘號(hào),用做乘法運(yùn)算,例如5*6。
申明一個(gè)指針,在定義指針變量時(shí)使用,例如int *p;。
間接運(yùn)算符,取得指針?biāo)赶虻膬?nèi)存中的值,例如printf("%d",*p);。
C語(yǔ)言中*p
和p
的區(qū)別
1、表示的含義不同
*p
表示此指針指向的內(nèi)存地址中存放的內(nèi)容。
p
表示一個(gè)指針變量的名字,指此指針變量所指向的內(nèi)存地址。
2、輸出的格式不同
*p
一般是一個(gè)和指針類(lèi)型一致的變量或者常量。
p
輸出的是一個(gè)16進(jìn)制數(shù), 輸出一個(gè)指針的地址。
3、功能不同
*p
是讓程序去那個(gè)地址取出數(shù)據(jù)。
p存放的是地址。
#include <stdio.h> int main(void){ int x=3; int *p,*q; p=&x,q=&x; printf("%dn",*p++); printf("%dn",(*q)++); printf("%dn",x); }
輸出結(jié)果為:3,3,4;
解釋?zhuān)?/p>
擴(kuò)展知識(shí):*p
和**p
的區(qū)別
int *p
:一級(jí)指針,表示p所指向的地址里面存放的是一個(gè)int類(lèi)型的值
int **p
:二級(jí)指針,表示p所指向的地址里面存放的是一個(gè)指向int類(lèi)型的指針(即p指向的地址里面存放的是一個(gè)指向int的一級(jí)指針)
例如:
int i=10; //定義了一個(gè)整型變量 int *p=&i; //定義了一個(gè)指針指向這個(gè)變量 int **p1=&p; //定義了一個(gè)二級(jí)指針指向p指針
那么取出10的值方式為:
printf("i=[%d]n",*p); printf("i=[%d]n",**p1);