1樓:重定向的憂傷
我簡單解釋一下
如果p是乙個
int型別的指標,x是int型別,p=&x就是p指向x所在的記憶體位址如果p是乙個內int指標型別的指標,
容x是int型別,*p=&x就是讓指向的int型別的指標指向x所在的記憶體位址,前提是,你已經為p開闢了空間,不然p指向的記憶體不安全。
如果*p=&x這句話處於乙個定義的位置 例如 int *p=&x,那麼就相當於定義了乙個int型別的指標p,指向x所在的記憶體位址。 這個時候,*不是取值的意思,而是定義指標的符號。
建議題主好好去看一下c語言的課本,只要搞清楚指標是什麼,取值是什麼,取位址是什麼,這些問題就完全不是問題。
c語言中,設p是乙個指標,*p=&x與p=&x有什麼區別
2樓:匿名使用者
前者是在定義指標時才成立,意思是定義指標p是變數x的位址。後者是程式語句中的取x位址賦值給p。
3樓:聽不清啊
*p=&x是在定義變數時;
p=&x是在定義變數後。
int x,*p=&x;
或:int x,*p; p=&x;
4樓:匿名使用者
兩個語句不可能同時出現,必然有乙個是錯誤的。
*p=&x:指的是指標p的」值」是乙個指向x的指標;
p=&x:指的是指標p指向x。
*p=&a,*p=a和p=&a各是什麼意思,有什麼區別?
5樓:匿名使用者
表示式的意思:
1、*p=a的意思:將a的值賦給p指標指向的位址的值;
2、p=&a的意思是:將a的位址賦給指標p;
3、*p=&a的用法錯誤。
區別在於:
p=&a就是用a的位址對p賦值,a是乙個變數,&a就是儲存這個變數的記憶體位址,指標儲存的就是乙個位址,*p就是這一位址中的內容。
擴充套件資料另類*和&
兩個地方要注意: 在程式宣告變數的時候的*,只是表明「它是乙個無符號整數,這個整數指向某個記憶體位址,一次訪問sizeof(type)長度」。這點不要和(*)操作符混淆;
在c++程式宣告變數的時候的&,只是表明「它是乙個引用,這個引用宣告時不開闢新空間,它在記憶體分配表加入新的一行,該行記憶體位址等於和呼叫時傳入的對應引數記憶體位址」。
這點不要和(*)宣告符,(&)操作符混淆。
6樓:匿名使用者
1.一般來說*p=&a的表示方法是錯的,*p=a和p=&a是正確的。
2.*p=a的意思:將a的值賦給p指標指向的位址的值;
3.p=&a的意思是:將a的位址賦給指標p;
4.區別:*p是乙個值;p是乙個位址;兩者完全不相同。
5.*代表著p指向的位址的值,簡單來說就是取值;&是取位址符號,取的是位址;p是指標,可以理解為所指向的值的位址,*p就是取p指標指向的位址的值,&a就是取a的位址。
7樓:匿名使用者
*是解引用運算子 &是取位址運算子
8樓:小小小子
int *p=&a;
和int *p;pa=&a;等價
這裡的*是乙個指標說明符,不是間接定址運算子,我剛好看到這一點分享一下,前面幾個人都說這種是錯誤的,估計理解錯了吧
9樓:千古1帝劉公嗣
直接看**執行結果就
清楚了。
#include
int main()
10樓:匿名使用者
這個問題如下所述:
int b=5;a=10;// 定義變數a,並賦值為10;b=5
int *p=&b; //定義指標變數p,並且讓指標p指向變數b,其中 & 為
//取位址運算子
*p=a; //是將a的值就是10存放到指標p指向的變數b,這樣b的值不再是
// b=5,而是變成b=10
p=&a;// 這句是改變p 的指向,讓p指向變數a。例如還有下面的語句
*p=123; //那麼這樣後就會有p指向的變數的值為123.此處是a=123.
11樓:匿名使用者
& 取位址符 值相當與指標
* 取對應位址字元 型別與該位址所儲存的變數型別一樣
12樓:匿名使用者
*p=a是p取a值
而p=&a是取a 的記憶體位址
13樓:匿名使用者
第乙個&是指引用吧,*p=&a意思是p所指的值為a的引用
c語言中*p=&a和p=&a有什麼區別
14樓:非常可愛
c語言中*p=&a和p=&a只有乙個區別就是指標初始化時間不同。
p=&a:p是1維指標;
*p=&a:p是2維指標;
p=&a示例:
inta;
int*p;
a=5;
p=&a;
printf("valueis:%d.",*p);
擴充套件資料*p=&a的使用
int a, b, c;
int **p;
a = 5;
b = 6;
c = 7;
p = (int **)malloc(el_**t * sizeof(int *));
*p = &a;
*(p + 1) = &b;
*(p + 2) = &c;
for(int i = 0; i < el_**t; i++)printf("value is : %d\n", **(p + i));
15樓:育知同創教育
總得來說沒區別,就是指標初始化的時間不同而已int *p = &a;//這裡p宣告的時候直接初始化它的值為變數a的位址
int *p;//宣告指標p,p的值不確定可能指向任何位址,p = &a;//顯示初始化使p指向a的位址
16樓:匿名使用者
如果a都是基礎型別, 而不是指標, 比如a為int那麼 p=&a, 是把a的位址,賦值給p, p需要是int *型別。
而*p=&a 是把a的位址賦值給*p, p需要是int **型別。
注意 如果是int *p=&a;這種形式
是定義int *型別的p, 並給p初始化為&a。 等效於int *p;
p=&a;
還是給p賦值,而不是給*p賦值。
17樓:匿名使用者
1.一般來說*p=&a的表示方法是錯的,*p=a和p=&a是正確的。
2.*p=a的意思:將a的值賦給p指標指向的位址的值;
3.p=&a的意思是:將a的位址賦給指標p;
4.區別:*p是乙個值;p是乙個位址;兩者完全不相同。
5.*代表著p指向的位址的值,簡單來說就是取值;&是取位址符號,取的是位址;p是指標,可以理解為所指向的值的位址,*p就是取p指標指向的位址的值,&a就是取a的位址。
18樓:匿名使用者
對於指標來說,
*p = a[0],表示向位址為p的記憶體區域賦值為a[0]。
p = a[0],把
變數p的值改為a[0],這個語句正常應用中是錯誤的。變數p的值為記憶體位址,這樣賦值會丟掉p原來指向的記憶體。
正確給記憶體位址賦值應該使用第一句。
19樓:天雨下凡
這樣問說明你對指標的概念還不清楚,以下兩種方式等價:
一、先宣告指標,再給指標賦值
int *p,a;
p=&a;
二、定義指標的同時給它賦值
int a,*p=&a; //這裡的*p可以解釋成int * p,int *表示p是指向int型變數的指標
20樓:匿名使用者
#include
int main()
21樓:平野律子
舉個例子吧: a是乙個陣列,它在記憶體中的初始位址比如說是0x11111111(簡單假設),且a[0]的值是1,也就是說,記憶體0x11111111中儲存的值是1。 於是,&a[0]=0x11111111,a[0]=1。
int *p; p=&a[0]; 指標p會有乙個自己的記憶體位址,通常占用4個位元組(比如初始位址是0x22222222)。p的值是&a[0],也就是說從0x22222222開始,後面4個位元組中儲存的值是0x11111111。 *p的值就等於p所指向的記憶體位址中儲存的值,也就是a[0]。
所以*p等於1。 如果*p=&a[0]的話,很容易出問題。比如說int *p之後,p的初始值可能是0xcccccccc(debug版本)或者0x00000000(release版本)。
這個時候,如果你寫一句*p=&a[0]的話,將會把0xcccccccc或者0x00000000記憶體之後4個位元組的值變為0x11111111。 而0xcccccccc和0x00000000記憶體區通常是不可寫的,這樣就會報錯。採納哦
22樓:爵爺
在定義指標的同時讓指標指向某個位址 如int *p=&a;不能直接使用*p=&a; p=&a;代表的是讓p指向變數a的位址
23樓:百度使用者
*p=&a;是將a的位址賦值給*p,結果會是乙個十六進製制的數。 第二個是讓p指向a的位址空間。*p的傎和a相等。
int a=2,*p; *p=&a; 列印*p應該是乙個位址值,很長一串, p=&a; 打*p印結果會是2;
24樓:
有啊,*p是個指標,他儲存的是乙個變數的位址。你把a[0]裡的資料賦給他,是儲存在那個變數中,不是在存*p中。另乙個p是個變數,a[0]中的資料時存在p中
例如:int *p;
p=&b;
*p=a[0];
b==a[0] 值是放在b中
另乙個是放在p中 ,不同的
有定義:int *p,**q,x;如下有p=&x,q=&x,哪個正確?怎樣才是都正確的?
25樓:匿名使用者
p=&x正確,q=&x錯誤,q是二級指標,不能直接指向普通變數,而應該指向乙個指標變數,這麼寫就正確:q=&p;
int x,*p=&x則&*x和*&p分別表示什麼
26樓:金色潛鳥
&*x 和 *&p 都是錯誤的表達。
因為 int x; 沒有 *x 形式,只有求位址 &x 形式.
因為 int *p; 沒有 &p 形式,只有求指向的值 *p 形式.
可以 有 &*p, 可以 有 *&x. &*p 就是 p, *&x 就是 x.
例如:int x=8;
int *p=&x;
等同
設變數定義為「int x, *p=&x;」,則&*p相當於_____。 a、p b、*p c、x d、*&x
27樓:匿名使用者
選擇 a
因為*p是指
du針。當x的位址賦值
zhi個指標p的時候,他dao們的位址就一樣回(數值也是一樣)。
指標的話,要表示數值的答話用用*p,指位址的話,只要p就可以。
如果加位址符號&,那就值該指標的位址(&*p),也就是值x的位址。
abcd中,只有a選項表p的位址(即是x的位址)。
b、c和d都是錶值。
希望能幫助你!
PHP有哪些選擇運算子,各有什麼作用?
a選項,看下圖 不用全部記住,記住平時比較常用的就行了,還有記住 算術運算子 關係運算子 邏輯運算子 賦值運算子。php中的選擇運算子包括 1 三元運算子 它是一種簡便的條件表示式,可以根據條件的真假來執行不同的 它的語法為 expr1 expr2 expr3 如果expr1的值為 true,則整個...
布林運算子有哪些布林運算有三種,分別是什麼?
沒有布林運算子,只有布林表示式和布林值,所有值為真或假的表示式都稱為布林表示式,其值用0 或1表示.c語言的運算子可分為以下幾類 1.算術運算子 用於各類數值運算。包括加 減 乘 除 求餘 或稱模運算,自增 自減 共七種。2.關係運算子 用於比較運算。包括大於 小於 等於 大於等於 小於等於 和不等...
c語言中有關鍵詞9種控制語句34種運算子
這是輸出時要用到的格式。f表示輸出浮點數,與f之間是輸出浮點數的格式.1表示保留一位小數。1f表示輸出浮點數,並保留一位小數 在c語言中,i 1的原型就是i i 1,所以i 1相當於就是i i 1的簡寫。不管c語言結構 演算法是否複雜基本上都能看到這樣的簡寫,但是否要簡寫還是看個人的習慣。c語言中,...