1樓:
問問題不要斷章取義。*p=(int *)a這個不是一個完整的語句,前面後面都可能省略內容。
float b=3.14,*a=&b;
int *p=(int *)a; //這個才是完整的,前面有int *,後面有分號。表示將指標a的型別轉換為整型指標再賦給p。
2樓:鈄問青
你好!!!
int (*p)[m]定義的陣列指標,表示定義一個指標變數,此指標變數是指向一個含有m個元素的一維陣列:舉例:
int a=,(*p)[5];p=a;那麼指標p就指向陣列a的首地址,*(p+i)表示陣列a中的值。
一個更常用的用法是:用二維陣列的行地址給其賦值:
int a[3][2]=,(*p)[2];
p=a[0],p=a[1],p=a[2]表示把陣列的每一行的首地址賦值給指標變數
注意一點:int (*p)[m] 中的m一定要和a[n][k]中的列數即k相等
int *p[m]表示宣告指標陣列p,其指向含有m個指標元素的首地址。舉例:
int a[3][2]=,*p[4];
p[0]=a[0],p[1]=a[1],p[2]=a[2]
注意int *p[m] 中的m一定要和a[n][k]中的行數和列數即n和k沒有任何關係!!!
3樓:匿名使用者
就是把a強制型別轉換,變成指向整型的指標值,賦給指標p指向的地址。p應該是指向整型的指標。
比如a=0x33445566,p=0x12452345,執行完後,地址0x12452345指向的記憶體裡的值應該是0x33445566。
“int **p”和“int *p”有什麼區別?
4樓:怕不他啊不了
int *p表示的是一級指標,表示p所指向的地址裡面存放的是一個int型別的值。
int **p表示的是二級指標,表示p所指向的地址裡面存放的是一個指向int型別的指標。
一級指標存放變數的地址,指向的值是變數的內容。如int* p=, p=陣列的首地址,*p=陣列的第一個值;
二級指標存放一級指標的地址,指向一級指標。如int*p =, int**pp=&p,pp=指標p的首地址,*pp=陣列的首地址,**pp=陣列第一個值1。
指標陣列的陣列名傳遞引數對應為指標的指標即二級指標,二維陣列的陣列名傳遞引數對應為陣列指標即指向一維陣列的指標
一級指標通過形參,可以修改實參中指標所指向的地址中的值。修改不了實參中指標所指向的地址。需要藉助二級指標才可以。
5樓:尉詩桃牟畫
int*p
:一級指標,表示p所指向的地址裡面存放的是一個int型別的值int**p
:二級指標,表示p所指向的地址裡面存放的是一個指向int型別的指標(即p指向的地址裡面存放的是一個指向int的一級指標)
例如:int
i=10;
//定義了一個整型變數
int*p=&i;
//定義了一個指標指向這個變數
int**p1=&p;
//定義了一個二級指標指向p指標
那麼取出10的值方式為:
printf("i=[%d]\n",*p);
printf("i=[%d]\n",**p1);
int *p=a和int *p=&a有什麼區別?
6樓:匿名使用者
int *p=&a 其實是兩個語句 等價於 int *p; p=&a;
如果a是int型,int *p=a是錯誤的,正確的應該是 int *p; p=&a;
在定義的時候不能給p直接賦值整型,只能賦值int型地址 即 &a;
如果要給p指標指向的地址賦值,就可以*p=a;但不能在定義*p的時候直接賦整型。
7樓:
int a[10];
int *p=a; //與前面定義的陣列名a型別相同,才可以這樣賦值。
int a;
int *p=&a; //前面定義的a是普通變數,才可以這樣賦值。
8樓:捧一米陽光
從基本定義來啊,int *p之後p為一個地址,*代表指向這個地址,int *p=&a等價於int *p,p=&a.這樣p和&a都是地址,可以=。對於int *p=a,如果a為陣列名,則也是個地址,與前面的就同了,如果a只是個一般變數,p是地址,*指向它,*p合起來就是一個數,如a是int型,就可看成兩個數賦值,如果a不是int型,出錯
9樓:匿名使用者
我的理解
int a,*pa=&a;是正確的,相當於int a,*pa;pa=&a;即(int*)pa=&a。
而int a,*pa;* pa=&a;是錯誤的,因為*pa是值,&a是地址。
10樓:孤楠獨碧
int *p就是申請一個int型的指標p,指標是用來儲存地址的,所以&a就是取得a的地址賦給p。但是int*p=a的話,a必須是個地址,可以是指標,也可以使陣列名。
11樓:不瀟撒的漁
int* p 是定義個指標變數,&是取址符;
所以int* p=a,是定義個整型指標變數,並將a賦值給該變數;
int* p=&a,是將a的地址賦給該整型指標變數;
12樓:
我猜你的 a是int型的 假設定義了 int a = 12; 那麼 int *p = a;編譯是通不過的, 因為這裡p初始化是把 int 型直接賦值給了 int*這是編譯器不允許的, 而後者 int *p = &a, 是把變數a的地址賦值給指標p 意思是把a的地址儲存在指標的記憶體空間中, 我們查詢 *p 是根據指標p儲存的地址去找到a的。
13樓:我的查出
int *p=a相當只要你給與a一個具體的值該指標將指到那兒
int *p=&a是&a中的a是你輸入的值所在的位置而p指的是地址a的地址
14樓:匿名使用者
int *p=a p指標的值(p代表的地址)是a
int *p=&a 表示p指標指向的是a的地址,p的值是a的地址
15樓:匿名使用者
前者是將a的內容賦給指標p(也就是p指向a指向的資料)
後者是將a的地址賦給指標p(也就是p指向a)
16樓:匿名使用者
int *p=a 表示p指標的地址是a
int *p=&a 表示p指標指向的是a的地址,p的值的a的地址
17樓:匿名使用者
nt *p是定義一個指標 對應的該是地址
int*p=&a 則a是個指標或陣列
int*p=&a 則a是個資料
18樓:胡曉帥
前者a的型別應該為int*,為負值操作,p的值等於a的值
後者a的型別應該為int,為取地址操作,p的值等於a的地址
19樓:天蠍
1)int *p=a;
舉例:int *p=100;
p是一個指標變數,將一個常量賦給一個指標變數,p等於地址0x00000064,即p是指向某個數的指標變數,該數的地址是0x00000064,一般實際中沒這麼用;跑下程式:
2)int *p=&a;
舉例:int a=100; int *p=&a;
a是一個變數,p就是指向a的指標變數,即p等於a的地址;跑下程式:
c語言中*p=a是什麼意思?
20樓:匿名使用者
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 ; 很重要,指標變數必須要指向一個明確的地址,然後才能*操作,否則,未指定地址的指標變數被稱為野指標,引用野指標會造成程式執行異常。
21樓:惑
首先來說一下*和&,為了便於理解你可以認為,這裡*是取內容,&是取地址。
我不討論它們的區別,因為*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就不算錯了?後來老師給的解釋是這種形式只有在上面那種情況下成立,其他的情況確實都是錯的。
22樓:匿名使用者
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在宣告語句中和執行語句中的含義是不同的。
23樓:匿名使用者
將a的值賦值給指標p
進行這樣的操作,你要確保變數a是一個合法的指標!
否則,當你使用指標p時,會出問題!
24樓:匿名使用者
不合法!a不是地址!是變數啊!
是什麼意思, 和 分別是什麼意思?
在數學裡,是指相似的意思。大概有幾條定律可以判斷相似三角形。偶是初三學的。其實和你初一學的 全等三角形有異曲同工之妙呢!相似三角形的判定定理 1 如果一個三角形的兩個角與另一個三角形的兩個角對應相等,那麼這兩個三角形相似,簡敘為兩角對應相等兩三角形相似 2 如果一個三角形的兩條邊和另一個三角形的兩條...
玖是什麼意思,玖和是什麼意思
玖 ji 1.似玉的黑色石。2.九 的大寫。玖是乙個漢字,原意是像玉一樣的淺黑色石頭。現基本用法是數目字 九 的大寫形式。多用於票證 賬目等。玥 yu 古代傳說中,上天賜予有德聖皇的一顆神珠。少昊是中國上古人物,傳說少昊出生時,有五色鳳凰領百鳥集於庭前,此鳳凰銜果核擲於少昊手中。忽然大 動,窮桑倒地...
K和rk是什麼意思,K和rk是什麼意思
這好像是 編輯 時的 輸入 錯誤。都是 百分之一的意思 rk演算法的全稱是什麼?又叫rabin karp演算法,include stdio.h include string.h struct s 100000 int h 100000 int l 100000 char da 100000 25 i...