1樓:鬼火狼煙
我也舉個例子,一個函式最多返回1個值,你想返回2個值怎麼辦?
int a(int a,int b)
這個時候,你想用a和函式返回值(b+1)來取的2個返回值,但是由於作用域,你會發現函式外面的a還是原來的值,改成下面的,就可以了
int a(int *a,int b)
----------------------------------
你做了個機器人程式,這個機器人是有ai的,而且這個機器人的ai是可以變化的,那麼我們會定義:
void robot()/*機器人的運動函式*/
/*其他運動***/
}你寫出了一個非常聰明的機器人,現在你的老大,要你寫個同樣的笨蛋機器人出來,你怎麼做?修改ai部分讓他變傻?如果**很複雜,你會迷失在你自己的**裡,你說把ai提取出來,寫成一個函式,那麼新ai是另一個函式,不就可以了碼?
但是,你還是要改動運動函式裡面的呼叫吧,**一多,你照樣迷失~,怎麼辦(這裡有xd會說,用class啊,你老大說,我們公司沒有c++~~)那麼你可以這麼定義來解決問題:
void robot(void (*ai)())
這個時候你的聰明ai可以這麼定義:
void ai1()
那個笨蛋可以這麼定義:
void ai2()
在你的**呼叫運動**的時候,你需要一個聰明的機器人就可以這麼呼叫:
robot(ai1);
笨蛋的那個就可以這又麼用了:
robot(ai2);
這個說的高一點,就是後來介面的實現方式,說的差一點,就是把函式地址做引數,推廣一下,所有的**函式的實現都是這樣的,再按個好名字:event,就是偉大的事件驅動了..要賣錢?
好,商業化的流行名字:委託~,這些看起來很高深的東西,其實底層,就是這麼個小小的指標在起作用.
這樣,你以後不關怎麼改動,robot()本身可以不用動,這個,也是指標的好處,指標是很強大的東西,也是c裡面最大的魅力(很多人看法完全相反呵呵),希望上面的描述能給lz一點點啟發呵呵
2樓:
指標用處就大了,字串就是指標,如果你需要一個非常大的字串,那麼通常會用malloc分配一個空間存放。
另外使用c++的多型性和虛擬函式,可以實現很靈活的功能,這個屬於深入程式設計內容,適用多型性和虛擬函式必須要使用指標。
3樓:匿名使用者
不行了,下面舉一例
main()
;int i,j,k;
char *temp;
for(i=0;i<6;i++)
}for(i=0;i<6; i++)
printf("\n%s",cp[i]); }
4樓:甜心乳酪
指標很有用的,其實指標就是地址.指標變數是個特殊變數,裡面存放的是指標,也就是地址.
當你學過資料結構以後,就會知道用處了.
在c中,呼叫函式是用值傳遞的,所以無法返回變數.舉個例子,在c中,如果要交換兩數,如果不用指標怎麼實現啊.沒有辦法實現.用指標可以這樣.
void swap( int *x ,int *y)我覺得潭浩強那本書不錯.
有句話叫指標是c的精華,慢慢體會吧.
5樓:匿名使用者
程式設計程式設計再程式設計這是最好的辦法,不會的也要天天想
6樓:
人們都說指標是c語言的靈魂,如果指標學好了,可以為以後的學習打下一個好的基礎。資料結構,vc++,以後的學習都要用的到的。排序演算法,等等,**能不用到指標,一定要明白指標真諦,多看書吧。
C語言表示式問題以及指標陣列,C語言指標陣列的問題
1 那個表示式的意思是,a 2,然後把4乘以5的結果賦值給a即最後 a 的值為20,a 2的結果沒有賦值給a。2 char name 宣告一個二維char型的指標。這樣進行初始化 char name 是因為編譯器可以根據 以及,來確定二維char 型陣列的維數。一維維數即為字串個數,3 二維維數是這...
C語言指標陣列的問題,請教各位大神
第一點,兩個按照順序儲存,所以噸輸出後輸出米,車,長 第二點,sizeof arrayquantityunit 這句話的結果是4,因為指標是4個位元組 請注意sizeof的使用,sizeof計算出來的結果是按照byte計算的,一個指標變數在32位系統中佔4byte 32bit sizeof計算出來的...
陣列名和指標的區別C語言中陣列名和指標的區別
可以!下面是我學習陣列和指標的總結 1 指向陣列首地址 對於一維陣列a 10 陣列的首地址為a 呼叫 p a a i 或者 p i 對於二維陣列a 3 4 整個陣列的首地址為a 0 呼叫 p a 0 a 0 i 或者 p i 此時a代表陣列第一行的地址。3 指向陣列的每行 形如 int a 3 4 ...