1樓:成邊神車異
我個人覺得,相對於&被稱為取位址運算子,*應該叫做定址運算子,*的作用是訪問其運算元所指定位址的記憶體位置。你問這個星號是什麼作用,其實是在問指標是什麼作用吧。要說指標的作用,首先要從記憶體說起。
假設你是32位吧。對於一般的32位應用程式來說,記憶體是乙個char陣列(或者說8位整型陣列也可以),陣列長度是2^32,慶敏而指標就是這個陣列的下標……嗯,我們把這個陣列叫mem吧。如渣差孫果你要嘗試的話,那麼可以這樣定義這個陣列:
char* mem = char*) 0;通過指標你可以訪問記憶體中的所有位置,比如mem[0] =a';,或者*(char*)0='a';/因為這個位置如鏈是不允許修改的所以這麼做會完美觸發「該記憶體不能為written」(不過這個神奇的翻譯錯誤只存在於xp中)。
2樓:隗鶴真
都說指標是c的精髓和核心,指標這個概念確實在學習初期覺得有些莫名其妙,不易理解。我們這裡儘量舉幾個指標確實有作用的例子來爭取更瞭解指標。舉個例子,我們想象一下,假設某公司有一批檔案需要各個組共享。
那麼乙個顯而易見的方法就是,每個組需要各個組共享。那麼乙個顯而易見的方法就是,每個組需要用的時候,都影印乙份檔案就好了。但是這個方法有幾個小毛病。
第一,如果檔案太多,比如有5000頁,喊衡還已經分類完畢,訂書冊皮機弄好了,那影印的時間成本和空間成本都很高。影印乙份要好久,還弄得到處都是檔案。第二,如果這個檔案還需要修改,而且是每個組都可以修改,那麼影印就會導致組和組之間的溝通成本上公升。
我改了州滲差個日期,我要打**告告訴所有的組,哎你們也改一下你們的啊!這出錯率就不用多說了吧。那麼另乙個思路,就是我就用這乙份檔案,放到某個地方,然後告訴每個組,這個地方在**,你們自己去看就好了。
這樣既省了影印的時間空間成本,又可以每個組直接在這份檔案上進行修改,讓其他組看到。指標就可以起到這個作用。與傳乙個很大的結構體(或者其他型別的比較大資料結構)相比,傳他們的位址,然後利用*運算得到實體,再進行運算,會節省時間和空間,而且讓各個函式可以共享某個資料結構。
當然,缺點也是顯而易見的,任何乙個團隊搗亂把這個檔案毀了,別人就沒法用了。正所謂**越強大,越容易傷到自己。c提供了很多「危險卻強大」的功能,要小心喲!
3樓:歷陽想
mac os系統, 也就是蘋果電腦的自帶系統裡, 有乙個功能叫"替身". 比如說你有個檔案, 右鍵, 調出"製作替身功能", 你就能用這個替身啦。你可以在自己的蘋果電腦, 或者向朋友借一臺蘋果電腦來, 實際地用一下這個功能, 然後你就知道指標有什麼作用了。
舉個最簡單的例子。 比如你有你的女朋友的**, 你把它放在"**-女友-2017年04月03日"的資料夾裡。你每天想看這個**, 你需要放在桌面上。
那麼複製乙份察仔出來, 就浪費空間了。如果你每天又要修改**, 比如p一下, 那麼複製之就更不方便了。 因為你每次修改一下, 還要把你在賣缺"**-女友-2017年04月03日"的資料夾的那份覆蓋掉, 麻煩。
我想你已經知道"替身中沒辯"這個功能的用處了。我想你也知道指標的用處了。這一切的一切, 都始於這一行**:
int *p=&i。
c語言中 「*」運算子的作用是 所謂「指標」就是
4樓:牽興朱媚
運算在c語言中,有兩種作用:
用作乘法,為雙目運算子,形式為a*b,就是計算數學。
中的a乘以b。
用作取值運算,為單目運算子,根據後續運算元(必須為指標)型別,取其指向的值。
所謂的指標,本質上就是位址。
指標變數的值,就是位址的值,當取值運算時就是到對應的記憶體位址上,依照指標型別進行取值。
5樓:諸葛丹圭秋
就是指標運算子;
注意區別。初始化時。inta;
intp=&a
賦值時。int
a,*p;p=&a;
的作用是取位址裡的運算元;
p==a;指標變數裡面就是整型的乙個十六進位數,用來表示的就是指向某個變數的位址。
6樓:仰春勞婷
intp;
就是定義乙個整形的指標變數,它用於存放乙個整形變數(比如int
i;)的記憶體位址,可以在其他函式里通過記憶體位址呼叫i,而"*"運算子是從通過指標存放的位址讀取對應變數的值的。
7樓:鮑運旺喬亥
程式設計中指標在使用以後,靈活多用,可以取別名來取位址。
而位址操作符很繁瑣,每次必須使用引用的變數。
就如同指路:指標相當於你用地圖來指。
取位址符相當於你不能用路名,不能用門牌號碼,不能用參照物。
8樓:網友
inta=10;
intp=&a;
printf("a=%d",*p);
在定義部分的int
p=&a,表示p的型別是int,也就是指向int型別的指標。
printf語句中的*p,表示取出位址p中的值,也就是a的值,10
c語言指標定義,有什麼用,作用有
9樓:網友
指標是c語言中廣泛使用的一種資料型別。 運用指標程式設計是c語言最主要的風格之一。利用指標變數可以表示各種資料結構; 能很方便地使用陣列和字串; 並能象組合語言一樣處理記憶體位址,從而編出精練而高效的程式。
指標極大地豐富了c語言的功能。 學習指標是學習c語言中最重要的一環, 能否正確理解和使用指標是是否掌握c語言的乙個標誌。同時, 指標也是c語言中最為困難的一部分,在學習中除了要正確理解基本概念,還必須要多程式設計,上機除錯。
只要作到這些,指標也是不難掌握的。
指標的基本概念在計算機中,所有的資料都是存放在儲存器中的。 一般把儲存器中的乙個位元組稱為乙個記憶體單元, 不同的資料型別所佔用的記憶體單元數不等,如整型量佔2個單元,字元量佔1個單元等。為了正確地訪問這些記憶體單元, 必須為每個記憶體單元編上號。
根據乙個記憶體單元的編號即可準確地找到該記憶體單元。記憶體單元的編號也叫做位址。 既然根據記憶體單元的編號或位址就可以找到所需的記憶體單元,所以通常也把這個位址稱為指標。
10樓:彭珂的課堂
c語言_071_指標的定義和使用_上。
論述c語言中指標的概念和作用,並舉例說明
11樓:網友
1、指標概念:變數的位址(計算機記憶體位元組的編號)叫做指標,存放變數位址的變數叫指標變 量, 簡言之,指標是用來存放位址的。
程式對變數的操作實際上是對變數所在的儲存空間讀取和寫入資料。方便對變數的操作。
舉例說明:int a=3;/*定義乙個整型變數a,並賦初值3*/int *p;/*定義乙個指標變數p*/
p=&a;/*讓p指向a的首位址,也就是a的位址*/程式為a分配乙個2個位元組的儲存單元,假如2個位元組的位址分別為(abcd1和abcd2,唯一),那麼p裡面放的值就是abcd1,不是3。這時可通過p直接引用a,實際上*p=3。以後不管a存放在記憶體中的哪個地方,只用通過呼叫p就可以引用a。
這時如果令*p=4,則最後的a值也為4。對於陣列,指標是指向陣列的首位址。
12樓:
自己去看這本書吧,上面有關於指標的上百個例子和詳細的程式註釋。
13樓:穿拖鞋不帥
我覺得如果你真想學指標的話,應該找本書看。
14樓:網友
基本概念不要諮詢。
找本書自己先好好學習基礎, 有疑問不懂得再問吧。
c語言問題,有關於指標在函式中呼叫起到的作用
15樓:迷茫的天行者
void swap(int *a,int *b)/**函式指標有兩個用途:呼叫函式和做函式的引數。
main()中呼叫swap(&a,&b),主函式傳遞給函式void swap(int *a,int *b)的引數a,b的地。
址且在子函式中改變a,b的位址,主函式中的a,b的位址不會改變,在子函式中只能改變a,b
的數值void swap(int *a,int *b) 只是對將a,b的數值交換*/
c語言移位運算子怎麼用,C語言移位運算子怎麼用?
這是c 好吧。算了c和c 的移位運算子都一樣 這個難道不對嗎,左移就是 2啊 不越界的話 原理就是你把1110化成二進位制 000010001010110 然後每個位都向左移一位,最低位補0,次高位捨棄 最高位是符號位,不能動 x 1 相當於乘以2 假如 x 8,對二進位制來說就是00001000,...
c語言運算子與表示式問題,C語言運算子與表示式問題
x 是 在本句中先將來x的值 1,然後 使用自 1後的值 y 是先使用原值,然後在以後使用 1的值這樣在printf語句中 x即 4,y 為3但是 x,y 是一個表示式,只能有一個值,這個值是3,因為取的是逗號運算子後的值作為整個表示式的值 逗號運算子的性質如此 而z 2則作為臨時變數值顯然是3 所...
初學C語言,是取指標目標運算子,是取地址運算子,它們有什麼區別?通俗一點謝謝
是取地址運算 copy 對任意變數都bai可以進行取地址操du作如 int i pi pi i int ppi ppi pi 是取指標目標運算子 其後跟隨zhi的必dao須是指標類變數如 int i,pi pi i pi 10 相當於 i 10 i 10 這樣寫就是錯的,i不是指標類變數,所以 i操...