亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c語言什么時候使用數組,什么時候使用指針?

c語言什么時候使用數組,什么時候使用指針?

C
青春有我 2019-04-09 05:04:36
c語言什么時候使用數組,什么時候使用指針?
查看完整描述

4 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

任何時候都可以使用數組,使用指針。

定義時,通常只有字符指針,和字符數組指針直接定義。用來表示字符串或字符串數組。
其他一般定義數組。操作時用指針或數組。

其他指針,多半用在參數傳遞,數據結構內部(不確定需要內存的大小,或者鏈表,二叉樹等鏈式結構)的時候。
還有一種是有些函數參數就是指針,這時定義一個指針,來操作傳進來的指針參數比較好。

指針作為參數,有一下幾種用法,

1)當作數組用,用來獲取或設置數組元素。
2)把一個比較長的數據結構傳入函數,只需要一個指針就夠了。
3)傳入變量的地址,用來讀取或修改變量的值,主要是為了修改用。

直接定義一個不指向任何對象的指針,并且也從不給他賦值,沒什么意義;

指針要么指向數組,要么指向變量,要么動態申請內存。
NULL指針,只是一個方便的指針,表示不指向任何對象。

真正有用的還是指向具體對象的指針。
如果定義了一個指針,使用時要讓他指向一個具體對象,當需要他不指向什么對象的時候,給他賦值為NULL;
PS:
C語言,數組名只是一個指針常量而已,離開定義可見處,數組大小的信息就不存在了。
只有定義完全可見的地方,才可以獲得數組的大小。
數組作為函數的參數,和外部引用聲明都不能獲得數組的大小。
參數只能傳遞指針,參數的大小只是指針的大小;
只能看到聲明的地方,獲取數組大小的努力,只能換來錯誤。

void fun1(int a[10]) //<==> void fun1(int a[]) <==>void fun1(int *a)
{
}
void fun2(int [10][10])// <==>void fun2(int a[][10])<==> void fun2(int (*a)[10])
{
}




查看完整回答
反對 回復 2019-04-10
?
幕布斯7119047

TA貢獻1794條經驗 獲得超8個贊

個人認為,當你需要某一變量需要一直存在的話,那么程序初始化時就可以直接使用數組之類的;
而當你需要對已存在于內存的某些量做改變時,則適宜使用指針。
這里需要注意的是,使用數組的前提是內存靜態分配,其大小是不可改變的;所以若要求動態分配的話,還是需要使用指針的。希望對你有所幫助。

查看完整回答
反對 回復 2019-04-10
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

數組指針--指向數組的指針,是一個指針,其指向的類型是數組;指針數組--元素為指針的數組,是一個數組,其中的元素為指針。仔細研讀下面的程序:
#include <stdio.h>

int
main(void)
{
int a[2][2] = {{1,2},{3,4}};
int (* p)[2];
char * s[2] = {"hello", "world"};

p = a;
printf("%d, %d, %d, %d\n", (*p)[0], (*p)[1], (*(p+1))[0], (*(p+1))[1]);
printf("%s %s\n", s[0], s[1]);

return 0;
}


查看完整回答
反對 回復 2019-04-10
?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

如果你想靜態定義的時候你可以使用數組,動態定義的話可以使用指針,可以通過關鍵字new來給指針分配內存空間,例如,
char arr[10] 你無論用不用得完這數組,這空間都會被占用
但是如果你定義 char *arr;
然后再根據你要存的數據的大少分配內存,就省空間咯!

查看完整回答
反對 回復 2019-04-10
  • 4 回答
  • 0 關注
  • 1115 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號