1樓:琪樂
(*p)[3]是定義一個指向一維陣列的指標,陣列元素為三。也就是說p指向的其實是a[0],a[1],a[2]這樣的形式。
p=a;其實就是把第0行的首地址賦值給p.
所以答案c中p[1]即是把第1行的首地址給p,在此基礎上向後移一位,取出地址中的元素數值。 *(p[1]+1)相當於a[1][1].所以是對的。
b的形式是對的,但是它相當於a[2][1],超出界限所以為錯。剩下的兩個格式就不對。
2樓:匿名使用者
賦值後,指標陣列的第一個指標指向字串陣列(a)裡的第一個字串的第一個字元,第二個陣列指向第二個字串的第一個字元,第三個指標沒有指向任何實體是空的。
a.是一個指標,指向a中第二個字串
b.由於a的第一維大小為二,故b選項是空的,沒有應用a中的元素。
d.也是一個空指標,沒有應用任何元素
3樓:匿名使用者
p是指向有3個int*型元素的指標,也可以說p代表一維陣列,p=a就是把a指標放到p陣列的第一個位置,因此p[1]是指a,那麼c選項就是訪問a的第一個元素
4樓:你還我賬戶
還是學生吧,看看 《c 與 c指標》
5樓:
int (*p)[3]可以看做struct*p;表示一個裝有三個整數的指標,p[1]相當於地址加3個整形的大小,再加一相當於地址又加了1
c語言 怎麼呼叫指標陣列函式
6樓:匿名使用者
1.函式指標的陣列定義方法:返回值型別( * 指標變數名[number]) (形參列表)。
例如:double add(double a,double b){};
double sub(double a,double b){};
double mul(double a,double b){};
double div1(double a,double b){};
double (*oper_func)(double, double) = ;//函式指標的陣列定義
2.函式指標是指向函式的指標變數。 因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。
這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。c在編譯時,每一個函式都有一個入口地址,該入口地址就是函式指標所指向的地址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上是大體一致的。
函式指標有兩個用途:呼叫函式和做函式的引數。
3.函式指標的宣告方法為:
返回值型別( * 指標變數名) (形參列表);
「返回值型別」說明函式的返回型別,「( * 指標變數名)」中的括號不能省,括號改變了運算子的優先順序。若省略整體則成為一個函式說明,說明了一個返回的資料型別是指標的函式,後面的「形參列表」表示指標變數指向的函式所帶的引數列表。例如:
int func(int x); /* 宣告一個函式 */
int (*f) (int x); /* 宣告一個函式指標 */
f = func; /* 將func函式的首地址賦給指標f */
或者使用下面的方法將函式地址賦給函式指標:
f = &func;
賦值時函式func不帶括號,也不帶引數,由於func代表函式的首地址,因此經過賦值以後,指標f就指向函式func(x)的**的首地址。
例子:#include
int max(int x,int y)
int main()
7樓:
#include
#include
void paixu(char **a) }} }
void main()
; int i;
printf("輸出地址\n\n");
for(i=0;i<5;i++)
paixu(a);
printf("最終排序是\n\n");
for(i=0;i<5;i++) }
main函式中a是常指標,它指向一組陣列,這組陣列每個元素又是指向字串的指標,所以陣列中每個元素的型別是char* , 因此變數a的型別是(char*)*,即char**.排序沒有必要返回char吧(完成排序功能還用返回一個字元麼?),函式引數改為char**型別,這樣才能將指標陣列首地址傳入函式.
向函式裡傳入的是陣列指標,我更改的是陣列元素,這是明顯的按地址傳遞方式傳遞引數,還用再return麼.
8樓:匿名使用者
指標陣列 就是有一個陣列,陣列中的元素都是指標,這些指標有相同的型別int *a[3];
char *b[4];
double *c[5];
char paixu(char *a[5]) //這樣才是字串陣列 }} }
請問在c語言中,函式傳參時怎樣利用指標傳遞陣列
9樓:大野瘦子
陣列名就是指標,例如:
#include
void pr(char *p)
printf(p);
void main(void)
char s = "abc";
pr(s);
10樓:樹桖珍
比如函式需要一個整型陣列:
void ex(int a)
或者可以寫成:
void ex(int *a)
效果是一樣的。
使用的時候:
引用陣列中的第2個元素(即下標為1的元素)a[1]
或者*(a+1)
基本上與陣列的正常使用沒有區別。
c語言是一門通用計算機程式語言,應用廣泛。c語言的設計目標是提供一種能以簡易的方式編譯、處理低階儲存器、產生少量的機器碼以及不需要任何執行環境支援便能執行的程式語言。
儘管c語言提供了許多低階處理的功能,但仍然保持著良好跨平臺的特性,以一個標準規格寫出的c語言程式可在許多電腦平臺上進行編譯,甚至包含一些嵌入式處理器(微控制器或稱mcu)以及超級電腦等作業平臺。
11樓:匿名使用者
宣告:int arr(int a);<=>int arr(int *a);(計算機會把前者也翻譯成後者處理,效果等價)
陣列名就是指標
int a[5]=;
引用時:
arrey=arr(a);
其實形參是一個指向該陣列的指標,而陣列只有一個,指向即操作返回陣列值我不知道你想問什麼
12樓:匿名使用者
直接上例子:
比如函式需要一個整型陣列:
void ex(int a)
或者可以寫成:
void ex(int *a)
效果是一樣的。
使用的時候:
引用陣列中的第2個元素(即下標為1的元素)a[1]
或者*(a+1)
基本上與陣列的正常使用沒有區別。
(但要注意 由於呼叫函式時只傳遞了指標(首地址) 所以程式不會做超界檢查)
你在子函式中進行的更改會直接影響到原陣列的內容這也就意味著 只要你在處理函式中更改了資料 那麼任何函式(包括原函式)訪問這個陣列時 都使用的是你更改以後的數值
13樓:匿名使用者
int *p;
int a[10];
p = a;
c語言程式設計,題目1:定義一個一維陣列,用指標引用的方法對該陣列各元素賦值,然後輸出該陣列。【未完】
14樓:o愛在西元前
題目1void main()
return;
}題目二
#include
void main(),,
};int (*p)[4]=a;
for(i=0;i<3;i++)
}return;}
c語言問題,陣列與指標,C語言陣列和指標的問題
char a computer a指向一個常量字串,常量字串是不能修改的,而你的for迴圈內要修改a指向的這個常量字串,自然要出錯 char a computer 這個a就是個普通陣列了,它的內容是可以改動的,就不會出錯了 因為 a是個指標啊 所以應該賦值賦地址!所以 應該 char a compu...
c語言裡陣列元素是什麼,C語言裡陣列元素是什麼
吉紫萱功彭 include stdio.h 標頭檔案就不說了吧 void main main函式 迴圈列印出a的全部元素 慈曉蘭邴蕭 include stdio.h 包含標頭檔案stdio void main 格式,照抄 輸出一個回車 敖英發卿愫 1標頭檔案忽略2 無參性main函式 函式開頭 3i...
C語言陣列(指標)越界訪問,C語言指標越界問題,大神指教!!!
與編譯器無關,只與記憶體管理機制有關,是作業系統級別的問題,堆疊的讀取方式只是資料結構上的不同,在機器層面,依然是單純的記憶體讀寫操作 陣列越界訪問的危險性不好評估,但確實是最嚴重的危險之一 結果基本上會100 崩潰,但是崩潰的原因很可能不一樣,就算是同一段越界 跑幾遍,原因也可能是不一樣的 指標越...