1樓:匿名使用者
我來給你解釋一下:這是定義了兩個指標:*p[0]*p[1],或者說定義了一個成員為2個的指標陣列。清楚了吧?
c語言中(*p)和*(*p)的含義是什麼?
2樓:匿名使用者
你的疑問恐怕是出在二維陣列裡吧
例如:int a[3][5],*p;
p=a;
上面的第一行表示定義一個指標變數p,下面一行表示p指向陣列a的首行a+1表示下一行首地址
*p等價於*(p+0)等價於p[0] 表示p[0]行首地址p[0]+1表示p[0][1]的地址 p[0]+2表示p[0][2]的地址
而*(p[0]+2)表示p[0][2]這個元素的值
3樓:栁児
*操作符,就是操作其後表示式所在地址的值,可以讀,也可以寫*還可以作為乘法運算子
*還可以用來宣告指標變數
這個要看具體情況
int a=6;
int *p=&a; //這裡的*p只是定義p為指標的意思//*p 其實就相當於a
printf("%d", *p);//輸出6*p=5; //結果是a也等於5int (*p)(int a, int b); //這裡的*p也只是定義p為指標
int *(*p) (int a,int b);//這裡只是定義了p為函式指標
int a;
int b;
int *q=&a;
int **p=&q;
*p = &b; //結果就是q=&b;
*(*p) = 5//結果就是b=5;
4樓:匿名使用者
(*p) == p所指向的那個地址的值
*(*p) == p所指向的那個地址的值所對應的地址的值假設 p 指向的那個地址 0x0001, *p = 1000那麼 *(*p) 就是 0x1000 那個地址對應的值
5樓:匿名使用者
*p是一個指標.
指標就是用來存放地址變數的東西.
一個'*'是指標,兩個*是指向指標的指標
6樓:但
解答的有錯誤!p[0]+k是指在p[0]指向的地址存的值的基礎上增加了k。比如,int a[10]={10,2},*p;
p=a;
那麼p[0]+6的值是16。
c語言中*p=&a是什麼意思
7樓:
假設我們定義一個指標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。
8樓:志遠
一樓說的不對
第一個表示p是一個指向指標的指標. *p取得p指向的指標,&a的地址賦予該指標.
第二個表示p是一個指標,&a的地址賦予p
9樓:匿名使用者
這個表示式我分成兩部分分析:
左值 *p
解引用運算子(*)的作用是將一個指標解引用,也就是獲取指標指向記憶體地址的內容。而這裡作為左值,就是將右值&a的內容賦予指標所指向的記憶體空間。
2. 右值 &a
取地址運算子(&)作用剛好和解引用相反,是獲得一個變數(不能是常量或暫存器變數或函式)的地址。這裡就是說取a變數的地址。
綜上,這句賦值表示式的意義為
將a變數的地址賦予p指標所指向的記憶體空間,也就是說**p 的值和 a相同
10樓:匿名使用者
第一個*p=&a表明了指標變數p在之前已被初始化了,簡單來說就是把指標變數p中所指向的地址的值改成了變數a的地址。即指標變數p是一個指向指標的指標變數。
11樓:鼎湖闇火
*p=&a 是將a的地址賦給p指向的變數p=&a 是將a的地址賦給p
但在變數定義語句中
int *p=&a;等價於int *p;p=&a;
12樓:匿名使用者
語句*p=&a是指把變數a的地址賦給指標變數p所已指向的某個指標變數,說明p是一個指向指標變數的指標變數;語句p=&a是指把a的地址賦給指標變數p,說明p是一個基型別為變數a這種型別的指標變數。
13樓:匿名使用者
記得不太清楚了
好像是: 上面是說p指標 指向a的地址 也就是說 *p就是a的值
而下面一個就是 指 a的地址 不能獲得a的值
14樓:匿名使用者
第一個是p指標的內容是a的地址
第二個是p指標的內容是a的內容
15樓:匿名使用者
*p=&a是把a的值賦給p,p=&a是把a的地址賦給p。
16樓:經寧機湛藍
1、在宣告語句中int
a;int*p=
a;//
宣告p為整
形指標變數,並指向變數a的儲存地址。 2、在執行語句中inta=2,b=
3,*p;*p=b;
//p指向的地址單元存入b的是值3......................*p=a;
//p指向的地址單元存入a的是z值2 通過以上兩個例子可以看出,*p=a在宣告語句中和執行語句中的含義是不同的。
c語言中*p=a是什麼意思?
17樓:匿名使用者
c語言中*p=a是指標變數賦值語句,這種寫法有兩種可能意思:
指標變數定義時的初始化賦值
int a[10];
int *p=a ; //這時的a是個地址,如:陣列名或指標變數,表示定義指標變數p,同時,p指向地址a。 這裡的*是跟隨int的,用來表示p變數是int *型別。
指標變數定義後,給指標變數所指記憶體中的資料賦值int a=10, x;
int *p ;
p=&x ; //p指向變數x的地址
*p=a ; //這表示向p所指向的地址中儲存一個資料a,a是個整型資料。p是x的地地址,*p就是x,本句相當於x=a ;
這裡的*是指標變數引用操作運算子,表示引用指標中的資料注意:p=&x ; 很重要,指標變數必須要指向一個明確的地址,然後才能*操作,否則,未指定地址的指標變數被稱為野指標,引用野指標會造成程式執行異常。
18樓:惑
首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取地址。
我不討論它們的區別,因為*p=&a這個形式一般是錯的,常用的是p=&a。
下面比較*p=a和p=&a。看圖,圖很詳細。
顯然它們是等價的。
然後比較*p=&a和p=&a;
則這兩種都是對指標變數的賦值,賦值有兩種形式
①先定義後賦值
int a=3,*p;(定義指標變數*p)
p=&a;(對指標變數取地址)
②定義變數的同時賦值
int a=3,*p=&a
也就是說在賦值時,
int *p=&a
相當於int *p,
p=&a
它們的區別其實就是
int *p=&a是同時定義*p並對賦值p(即a的地址賦給p),而p=&a,只是對p賦值,沒有定義指標變數。
但要注意,只有在同時定義賦值時「*p=&a」這種寫法才是對的
其他情況下不要用*p=&a,這種形式,因為根本就不對,如下圖。我之前一直的疑問是為什麼賦值時*p=&a就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。
19樓:匿名使用者
1、在宣告語句中int a;int *p = a; // 宣告p為整形指標變數,並指向變數a的儲存地址。 2、在執行語句中int a = 2,b = 3, *p;*p = b; // p指向的地址單元存入b的是值3......................*p = a; // p指向的地址單元存入a的是z值2 通過以上兩個例子可以看出,*p = a在宣告語句中和執行語句中的含義是不同的。
20樓:匿名使用者
將a的值賦值給指標p
進行這樣的操作,你要確保變數a是一個合法的指標!
否則,當你使用指標p時,會出問題!
21樓:匿名使用者
不合法!a不是地址!是變數啊!
c語言中p*是什麼意思,他和*p的區別是什麼?
22樓:匿名使用者
p*如是出現在算術表示式中,這個星號就是乘號,表示相乘,如果是出現在宣告中(如變數定義),那就表明p是一種資料型別,p*表示要宣告這種型別的指標變數。
*p依然可以表示相乘的運算,也可表示提取p指標指向的位置儲存的值。例如:
int a=9;
int *p=a;
printf("%d",*p);
這個printf()呼叫中的*p表示提取p指標指向的地址(即變數a的地址)儲存的值(即變數a的值)
23樓:匿名使用者
*的含義並非這麼簡單,如果只是想簡單瞭解,*可以作為四則運算中的乘,而在指標中,以*p為例,*則代表一種特定逆運算子(通俗**就是指標運算子),表示對存放地址的變數p進行特定的逆運算,使*p最後顯示的值為p所指向某個變數的地址所存放的值。
例如:int i = 6;
int *p;
p = &i;
那麼,*p == i;
24樓:匿名使用者
同樓上所說的,但是有中情況是 p是一種型別的時候
p *就是一種指標型別
25樓:匿名使用者
p*就是p乘以撒
*p那就是指標撒
c語言*p是什麼意思
26樓:匿名使用者
這個是指標p,就是一個指向某個地址的指標,他沒有儲存空間,只是一個指標
27樓:匿名使用者
*p是指標
int *p;//一個指向整形的指標
p3在C語言中什麼意思,p33在C語言中什麼意思
p是一個int指標吧?比如它指向的地址是8888,一個int佔4位元組 那p 1就是8884,p 2就是8880 就是從8876開始 c語言中 int p 30 p 3 0?p 10 p 3 是啥意思 p 3 0?p 10 p 3 這個是條件表示式。用條件運算子構成一個條件表示式,又常常用條件表示式...
c語言中p與P有什麼區別,c語言中p5與P5有什麼區別?
舉例說明,include int main int a 5 b int m a a範圍內的空間按照 int大小來取值 for i 0 i 5 i return 0 輸出結果為 1 2 3 4 5 其中 int a 5 表示在棧中產生一個大小為 5個int的空間 a代表的的是整個空間的首地址 int ...
c語言中c什麼意思,c語言中!是什麼意思?
c表示取c的邏輯非,例如if c 表示如果c 0,則語句成立。不曉得你要問什麼 如果想要更確切的解釋,請貼出相關 一種計算機程式語言,是現在運用最廣泛的語言,用於編寫程式 邏輯運算子,取反的意思 真 假 假 真 你確定歎號是中文狀態的嗎?c語言中!是什麼意思?include stdio.h main...