1樓:great啦啦啦
區別為:windows 7,中文名稱視窗7,是由微軟公司(microsoft)開發的作業系統,核心版本號為windows nt6.1。
windows 7可供家庭及商業工作環境:膝上型電腦、平板電腦、多**中心等使用。
c語言是比較基礎的程式語言,是學好組合語言的基礎,所以學好c語言很重要。
在資訊工程中,指標是一個用來指示一個記憶體地址的計算機語言的變數或**處理器(cpu)中的暫存器(register)。指標一般出現在比較近機器語言的語言,如組合語言或c語言。面嚮物件語言如java一般避免用指標,而是引用。
c語言中,p為指標,那麼*p和&p是一樣的嗎,什麼區別
2樓:匿名使用者
上面是我自己做的原理圖,深入到記憶體中,你就懂了.不懂隨時call
3樓:匿名使用者
樓主發現這兩個的區別了嗎?
*p &p
他們的區別無非就是p前面帶的符號
,如果樓主知道該符號的含義就不會提這個問題了;
* 取值運算子?
& 取地址運算子?
* 和 & 互為反運算子;
樓主還有疑問嗎?
加油!!
4樓:xiao蝌蚪找媽媽
在宣告指標變數的時候,*p表示宣告p是指標變數,比如int *p(宣告p為int型指標變數);在呼叫指標變數的時候,*p表示指標變數p所指向的變數的值,比如int a=5,b; int *p;(宣告p為int型指標變數),p=a; b=*p;(把p所指向的變數的值,即a的值賦給變數b)。對於&p,則是代表變數p的地址,顯然和以上*p的兩種意思都不一樣
5樓:
*p 是取p的內容
&p 是取p的地址
6樓:使用者名稱都是渣渣
*p是p指向的內容,&p是儲存p指標的記憶體地址
c語言*&p和&*p怎麼算的?他們有什麼不同?
7樓:拍子
1、*&p 等價於*(&p)。
2、&*p 等價於&(*p)。
舉個例子:
p是int變數,那麼*&p = p,而&*p是非法的。因為*p非法。
p是int *指標變數,那麼*&p = p,&*p = p,都是p。
printf("%d\n",*&p)中不知道p是什麼型別。
如果p是一個指標,則*&p和&*p一樣。
如果p是一個變數,比如int p =1;那麼*&p = *(&p) = 1(即從p的地址取值),而&*p = &(*p) 則非法,因為p=1,*1是取記憶體地址為1的值,這在c語言中是不合法的。
解釋下指標*p p &p的關係
8樓:萬能導師
使用*定義指標,例如char*p;
p是一個字元的指標;
如果在定義時沒有使用100*,那麼取指標指向的記憶體的值;
例如:inta[]=,3,5,7,9{1},*p;
p=一個;
所以乘以p等於1;
& and是地址操作符,例如,& and是變數p的地址;
比如:# include < stdio . h >
main()
{int[]={1,2,3,4,5},*p=;
printf("%d\n」*p);
printf("%d\n,p);
printf("%d\n」);
printf("%d\n」代替);
}擴充套件資料:
指標變數可以加或減,比如p++、p+i、p-=i。指標變數的加和減不是簡單地加或減一個整數,而是取決於指標指向的資料型別。
當給一個指標變數賦值時,要把一段資料的地址賦給它,而不是直接賦給一個整數,比如int*p=1000;這是毫無意義的,通常會導致程式在使用過程中崩潰。
確保在使用指標變數之前初始化它,否則您將無法確定指標指向的位置,如果指標指向的記憶體不允許,程式將崩潰。對於當前度不指向的指標,建議使用null。
可以減去兩個指標變數。如果兩個指標變數指向同一個陣列中的一個元素,那麼減法的結果就是兩個指標之間不同元素的個數。
陣列也是有型別的,陣列的名稱表示一組相同型別的資料。當您定義一個陣列,或者與sizeof, &操作符一起使用它時,陣列名稱表示整個陣列,並且表示式中的陣列名稱被轉換為指向陣列的指標。
9樓:冷123波
定義指標時用*,如char *p;
那麼p就是一個指向字元型的指標;
如果*不在定義時用,那就取指標所指向記憶體的值,如int a=,*p;
p=a;
那麼*p就是1;
&是取地址運算子,如&p就是取變數p的地址;
下面這個例子:
#include
main()
,*p=a;
printf("%d\n",*p);
printf("%d\n",p);
printf("%d\n",a);
printf("%d\n",&p);
}輸出結果為:
11245036(各人的電腦可能不相同)
1245036(各人的電腦可能不相同)
1245032(各人的電腦可能不相同)
從結果可以看出,
*p為所指向的地址的值
p為所指向的地址,即a的地址
&p為指標變數p的地址
c語言裡面指標,*p=&a和p=&a,有什麼區別
10樓:匿名使用者
如果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賦值。
11樓:匿名使用者
第一個p是指標的指標,第二個p是指標。
c語言中,p=&a 那麼*p與a的區別是什麼?
12樓:星呈幻
a和p是變數,&a和*p是表示式,1和0x1000是常量a和*p表示的都是整形左值,p和&a表示的都是指標型左值,1和0x1000表示整形和指標型右值。(左右值的概念不清的話,google一下)
在記憶體中,a和p有儲存空間空間,a存放著1,p存放著0x1000,*p和&a沒有空間,他們的運算結果是在暫存器中存放的,1和0x1000也有空間,在程式的常量段存放。
*p按照stanley lippman的著作《c++ primer》中的描述,p是指標變數,*是解引用操作符,*p是一個表示式,含義是「對指標變數p進行解引用操作」,這與表示式&a的含義「取整形變數a的地址」是正好是相反的操作。
13樓:失落血天使
首先 a和p都是變數 1000是常量,這裡只有a和p分配了記憶體,但是1000和1沒有
p 是指p的值,也就是1000
&a 是指a的記憶體地址
*p 是指p的記憶體地址
a 是指a的值也就是1
1 是a的值,放在分配給a的地址裡
1000 是p的值,放在分配給p的地址裡形象點說 ,a和p是房子
1和1000是住戶,1 住在a裡 1000住在p裡p 是指p的住戶
&a 是指a的門牌
*p 是指p的門牌
a 是指a的住戶
1和1000 是住戶
書的話,譚浩強的 c語言程式設計第3版 裡面有詳細的說明帖子就不曉得咧·······
14樓:
&a取址 *p取值這沒有什麼可說的。
int *p; int a;
a的地址1000h,即&a == 1000h. p是指標,它本身也有存放它的地址,設1200h,
即&p == 1200h(win32下,指標本身長度32位即4位元組,可通過sizeof(p)得到). 這樣就是用到兩塊記憶體了。
p = &a; 即p == 1000h. 這是一個地址值,本質是值,即可以加減等操作的。但是加減後的p, *p可能就無法訪問了,因為它已經不指向a了,比如p == 1004h了,如果這是在某一函式裡操作的,而1004h地址並不本程式的地址空間裡,取*p時那就非法訪問,要崩潰的;但如果1004h地址正好是這函式裡另外一個int b;變數的地址,那*p的值就是b了。
*p表示取p指向地址的值,也就是1000h上的值; a = 1; 說明1000h上的值為1,所以*p == 1;a, 它本身只是一個符號而已,這個符號代表了地址1000h起的int型長(4位元組)的一個記憶體塊, a=1,就是記憶體塊放一個值1, 如果有彙編的思想,能更形象點:[1000h] = 1,根本不需要a,b,c...之類的字元來表示,直接對記憶體地址進行存取。
15樓:匿名使用者
-------------------------------------
1. int a = 1;
2. int *p; -> 他的地址是1000
3. p = &a;
-------------------------------------
1.在記憶體 某個 地址 放入一個int型的數字[1],這個 地址 符號名為 a
2.宣告一個指標,這個指標 在記憶體位置1000的地方 型別是指標,符號名為 p
3. [*p] 我們宣告時 就是 *p 這個形態 所以就叫他指標.
那麼:a 是記憶體某個地址的 符號,語法上我們用 &a 表示這個符號的真正記憶體地質。
*p 因為是型別是指標,我們不能賦予它值,只能給他一個要指向的地址,共享和修改那個地址裡的內容(先不考慮const語句),。指標p裡放著 a的地址,當電腦讀到 p 時,直接去找 裡面的地址去了。
p 指向地址,*p表示那各地址的內容。*p 英語裡就叫它 point p 即 指標p
過程:p = &a : p 複製 a的地址到自己的位置。
*p = 2 : 電腦判斷 p的型別,是指標,就跳到 p 裡的地址位置,在判斷型別,不是指標,就把當前位置裡的 值 改為 2,如果還是指標,就重複上面 直到遇到不是指標型別的地址。
至於名稱,就叫指標,變數是 總稱,變數 a, 變數 b, 給他們賦予範圍和型別 ,int型變數a,指標型變數p;
16樓:匿名使用者
首先我們明確a為一個變數 假設
定義是 int a;
再明確p是一個指標,假設定義為 int* p;
當我們定義了一個a是系統會分派一個記憶體給你用來存放他的數值,如 執行了a=10;後 這個記憶體就存放了一個10的數字,當我們要用到它表示的10時,直接用a替代就可以了。
現在我們再用 p=&a "&"叫取地址符,他是一個運算子。 "&a"就表示指向a有就是上面的那個存著10的記憶體的地址。如果我們用到a的時候,很明顯,我們不能直接用p了,因為他是一個地址而不是我們需要的10這個數,那怎麼辦呢?
我們這裡就可用"*"這個符號,他表示取這個指標所指記憶體上的資料,即 *p就表示a了用法什麼的都一樣。
c語言中,設p是指標,p x與p x有什麼區別
前者是在定義指標時才成立,意思是定義指標p是變數x的地址。後者是程式語句中的取x地址賦值給p。p x是在定義變數時 p x是在定義變數後。int x,p x 或 int x,p p x 兩個語句不可能同時出現,必然有一個是錯誤的。p x 指的是指標p的 值 是一個指向x的指標 p x 指的是指標p指...
求助,在C 中,如果p是指標,那麼p,0與p,NULL等價嗎
根據 iso 定義,c 中 兩者是等價的,不同於c語言。c語言 null 指標 定義成 void 0 c 中 null 指標 定義成 整型常量 0 是右值.c 的null 指標 iso specification 4.10 1 原文 a null pointer constant is an int...
C語言中的while p NULL 語句,這個p指標是不是自動往後走啊,沒有 p和P
不會自動往後走的。這種情況下一般也不會簡單地加,多半是做連結串列之類結構的遍歷,p p next之類的語句。那不行吧,有沒有重新賦值p的呢?在這條語句中,p沒有變化 就這半個迴圈語句而言是不會改變p指標的值的,你這裡只列了一個迴圈條件,並沒有列出迴圈體,這個p指標應當是在迴圈體中值發生變化。c語言中...