指標問題?若不運用陣列,指標還有用嗎

2022-12-04 08:46:11 字數 1787 閱讀 6591

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 ...