❶ c語言指針,這個p++和p--是什麼意思
while(*p2) p2++; // 將p2移動到字元串尾,即指向結束符0
p2--; // 回移,p2指向字元串最後一個字元
代碼的功能是將字元串首尾對應字元依次交換
❷ C語言中,指針*p[i]與p[i]有什麼卻別分別代表什麼意思
若果我還沒記錯的話:
你的問題:你這里問的是指針
p[i]:數組p的[i]這個地方放的值
*p[i]:數組p的[i]這個地方放的值(這當做一個地址)的值,即p[i]這個地方放了一個地址(相當於另外一個p[i]),然後用*讀取他所代表的值。----即我所說的:數組p的[i]這個地方放的值(當做一個地址)的值
❸ C語言中,p,&p,*p有什麼關系
假設我們定義一個指針p。
那麼會經常使用到三個符號:
1,p;
2,*p;
3,&p;
初學者經常會感到很迷茫,到底這三個符號表示什麼?
我們知道,p是一個指針變數的名字,表示此指針變數指向的內存地址,如果使用%p來輸出的話,它將是一個16進制數。而*p表示此指針指向的內存地址中存放的內容,一般是一個和指針類型一致的變數或者常量。
而我們知道,&是取地址運算符,&p就是取指針p的地址。等會,怎麼又來了個地址,它到底和p有什麼區別?
區別在於,指針p同時也是個變數,既然是變數,編譯器肯定要為其分配內存地址,就像程序中定義了一個int型的變數i,編譯器要為其分配一塊內存空間一樣。而&p就表示編譯器為變數p分配的內存地址,而因為p是一個指針變數,這種特殊的身份註定了它要指向另外一個內存地址,程序員按照程序的需要讓它指向一個內存地址,這個它指向的內存地址就用p表示。而且,p指向的地址中的內容就用*p表示。
我來舉個例子說明這三個符號到底表示什麼。
假設有一個樓盤的銷售員,當然,現在時髦的叫法是「銷售代表」之類的,我們用字母x表示他。他負責銷售一個樓盤中的某套房子,此房子有一個地址為A,而他本身也需要有地方住,他居住的房子的地址為B。而這個幸運的銷售員很快的賣掉了這套房子給C。現在公司要求對銷售的房子必須包產到戶,也就是說,現在必須提到x的時候能夠管理到C。
如果用程序表示上述內容的話就可以使用指針。首先定義一個指針p,讓他指向地址A,地址A中住的是C,而x本來居住的地方的地址是B。OK,現在能知道p,*p,&p表示什麼了嗎?沒錯,p表示此指針指向的地址,就是A,而*p表示此地址中居住的人,就是C,而&p表示這個銷售員居住的地址,就是B。
❹ c語言的指針部分*p與p的區別是什麼
p是指針變數,其值是一個變數的地址。p收到了哪個變數的地址,就指向哪個變數。該變數成為p的對象。
*p是p所指向的對象的值。
例如:int i=3,*p;
p=&i; 注意:p收到i的地址,故p指向i,i是p的對象。
printf("%d,%d ",i,*p); 輸出:3,3 注意:*p是p所指向的對象的值,即i的值。
❺ c語言的指針部分 *p與p區別
c語言的指針部分 *p與p區別如下:
1、作用不同
*p表示此指針指向的內存地址中存放的內容。
p是一個指針變數的名字,表示此指針變數指向的內存地址。
2、輸出內容的格式不同
*p常用在一個和指針類型一致的變數或者常量。
p輸出一個指針的地址,通常是輸出一個16進制的數。
3、效果不同
*p是讓編譯器從指定的地址中讀取出數據。
p是用來存放要讀取數據的地址。
(5)C語言中指針p與lp擴展閱讀
C語言中使用指針的作用:
1、指針使程序的不同部分能夠共享數據
類似於共享內存,如果將某一個數據值的地址從一個函數傳遞到另外一個函數,這兩個函數就能使用同一數據。
2、利用指針,能在程序執行過程中預留新的內存空間
大多數情況下,可以看到程序使用的內存是通過顯式聲明分配給變數的內存。但是在很多應用場合中,可能程序運行時不清楚到底需要多少內存,使用指針可以讓程序在運行時獲得新的內存空間,並讓指針指向這一內存更為方便。
3、指針可以用來記錄數據項之間的關系
在高級程序設計應用中,指針被廣泛應用於構造單個數據值之間的聯系。比如,程序員通常在第一個數據的內部表示中包含指向下一個數據項的指針(實際上就是鏈表了),來說明這兩個數據項之間有概念上的順序關系。
❻ C語言 *p 和p的區別
C語言中,*p 和p都常用在指針當中表示一個指針變數,*p 和p的區別:
1、表示的含義不同
*p表示此指針指向的內存地址中存放的內容。
p表示一個指針變數的名字,指此指針變數所指向的內存地址。
2、輸出的格式不同
*p一般是一個和指針類型一致的變數或者常量。
p輸出的是一個16進制數,輸出一個指針的地址。
3、功能不同
*p是讓程序去那個地址取出數據。
p存放的是地址。
例子:
1、int a[5]={1,2,3,4,5};
int *p=a;//這是在定義指針變數p的同時就直接給它初始化,即把數組a的首地址賦給它。
2、int a[5]={1,2,3,4,5};
int *p;//聲明指針變數p
p = a;
(6)C語言中指針p與lp擴展閱讀
(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時聲明p 時開辟的地址。可以用賦值語句對內存地址賦值。
例:
int *p;
p=2003H;
*p=3000H
結果:
**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。
&&p=&(&(p))=&(3001H),此時出錯了,3001H 是個常數無法存放地址。
*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。
❼ 指針p p++和++p、p--和--p分別有什麼區別
1、p++ ++p相當於把p指針移動到p指針當前值加上sizeof(t)的位置,比如p=100,sizeof(t)=4,p++或者++p之後p等於104。
2、p-- --p相當於把p指針移動到p指針當前值減去sizeof(t)的位置,比如p=100,sizeof(t)=4,p--或者--p之後p等於96。
3、其中++或者--在後面,先以p當前位置來計算表達式,然後再移動指針位置;在前面先移動指針位置,再以移動後的位置計算表達式。
(7)C語言中指針p與lp擴展閱讀:
指針的作用:
1、指針就是指向一個特定內存地址的一個變數。C語言指針可以有效地表示復雜的數據結構、動態分配內存、高效地使用數組和字元串、使得調用函數時得到多個返回值等。
指針的應用往往與數組聯系在一起,是最頻繁的,也是最基礎的。在定義數組和函數時,系統都會為其自動分配一個指向其首地址的指針。對於一個數組,其名稱就是一個指針變數。
2、指針只是一個變數,它存儲一個內存地址。如果傳入一個地址,比傳入一個struct效率要高,因為少了一個拷貝過程。
3、指針能夠有效表示數據結構,能動態分配內存,能較方便的使用字元串,有效的使用數組。4、指針直接與數據等的儲存地址有關,是比較重要的。
比如,值傳遞不如地址傳遞高效,因為值傳遞先從實參的地址中提出值,再賦值給形參帶入函數計算;而指針則把形參的地址直接指向實參地址,使用時直接提出數據,使效率提高,特別在頻繁賦值等情況下。
❽ c語言裡面關於指針的例如int *p p *p 都代表什麼~
//定義指針的時候初始化p的值為n的地址
int */*這之前是p的類型*/p = &n/*給p賦值*/;
//給p賦值
p = &n;/*同上*/