當前位置:首頁 » 編程語言 » c語言數組做形參可以帶下標嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組做形參可以帶下標嗎

發布時間: 2022-08-27 16:51:50

c語言中,數組名作為函數參數,屬於什麼傳遞,為什麼

C語言中,數組名作為函數參數,屬於數組參數傳遞。在VB6.0中,允許使用數組作為實參傳遞到子過程的形參中,數組傳遞必須採用地址傳遞的方式來傳遞參數。

數組型變數名本身只是該數組所佔存儲空間的首地址,函數調用時,系統不會為形參分配數組存儲空間,而是僅僅分配一個存放數組地址(第一個元素地址)的存儲空間,此後,將實參數組的首地址傳遞給形參變數。

(1)c語言數組做形參可以帶下標嗎擴展閱讀:

數組參數在傳遞時應注意以下兩個方面:

1、 在實參和形參列表中只寫數組名,忽略維數的定義,但圓括弧不能省,當數組作為參數傳遞時,系統將實參數組的起始地址傳給過程,使形參數組也具有與實參數組相同的起始地址,若參數是多維數組,每維以逗號分隔。

2、被調過程可分別通過Lbound和Ubound函數確定實參數組的下界和上界。

② C語言數組的下標

第一:下標是用在數組中的;
第二:定義數組的是時候下標是代表數組的長度,比如
int
a[5];就是定義一個長度為5的存放整型的數組,數組就是集合,數組a有5個元素,即a[0],a[1],a[2],a[3],a[4],
一共5個元素,此時下標就是第幾個元素的意思。
例子如下:
int
a[5]
=
{1,2,3,4,5};
printf("%d,%d,%d,%d,%d",
a[0],a[1],a[2],a[3],a[4]);
//會輸出1,2,3,4,5
a[0]
=
10;
printf("%d",
a[0]);
//輸出10

③ C語言 數組作為參數傳遞問題

  • 以下是我寫的一個簡單的例子,一維數組和二維數組傳參。

④ c語言定義數組時可以不寫下標也不初始化賦值么(如:int a[];)

不可以。

但作為一個函數參數時,則可以:
void foo(int bar[])
{}

此時的bar,編譯器並不會把它當成數組,而會把它當成指針。

⑤ c語言中,定義數組和引用數組時,其數組的下標的數據類型分別允許是什麼

1、C89/C90標准:定義數組時下標只允許使用整型、字元型常量,引用數組時下標可以使用整型、字元型的常量或者變數

2、C99標准:定義數組時下標可以使用整型、字元型的常量或變數,但變數必須已經賦值;引用數組時下標可以使用整型、字元型的常量或者變數。以上所說的常量及變數均包含表達式。

(5)c語言數組做形參可以帶下標嗎擴展閱讀

1、數組包含給定類型的一些對象,並將這些對象依次存儲在連續的內存空間中。每個獨立的對象被稱為數組的元素(element)。元素的類型可以是任何對象類型,但函數類型或不完整類型不能作為數組元素。

2、在數組定義中,可以將元素數量指定為一個常量表達式,或者在特定情況下,指定為涉及變數的表達式。採用這兩種方式定義的數組分別被稱為固定長度數組和長度可變數組。

3、固定長度數組可以具有任意存儲類別:可以將它們定義在所有函數的外面或語句塊的裡面,並且可以使用或不使用存儲類修飾符 static。唯一的限制是數組不能作為函數參數。一個傳入函數的數組參數需要被轉換為指向數組第一個元素的指針。

⑥ C語言數組下標

下標可以是變數 也可以是常量。直接說a[0],a[1],a[2],a[3]這樣的下標就是常量。
對於訪問來說, 不在意是變數還是常量, 系統只是需要一個值, 作為偏移量
不管是變數還是常量, 訪問的時候 肯定是一個特定值, 而系統要的 無非是這樣一個偏移量而已。

⑦ 數組作為實參和形參的形式是怎樣的

兩者都可以,可以用下面的程序展示。

#include "stdio.h"

#include "stdlib.h"

#include "string.h"

void sortArray(int *a, int num)

//void sortArray(int a[], int num)

{

for (int i = 0; i < num; i++)

{

for (int j = i + 1; j < num; j++)

{

if (a[i] < a[j])

{

int tem = a[i];

a[i] = a[j];

a[j] = tem;

}

}

}

}

void printfArray(int *a, int num)

//void printfArray(int a[], int num)

{

for (int i = 0; i < num; i++)

{

printf("%d ", a[i]);

}

printf(" ");

}

/*

1、數組作為參數時,本質是指針,這是C語言的特點

2、數組作為參數時,裡面的數字有誤均可,對程序不影響

*/

void main()

{

int a[] = { 1, 2, 4, 5, 2, 53, 536, 263, 726, 37, 3 };

int num = sizeof(a) / sizeof(a[0]);

printf("數組排序前列印: ");

printfArray(a, num);

//開始對數組進行排序

sortArray(a, num);

printf("數組排序後列印: ");

printfArray(a, num);

system("pause");

}

(7)c語言數組做形參可以帶下標嗎擴展閱讀:

用數組名作函數參數與用數組元素作實參有幾點不同。

1、用數組元素作實參時,只要數組類型和函數的形參變數的類型一致,那麼作為下標變數的數組元素的類型也和函數形參變數的類型是一致的。

2、在普通變數或下標變數作函數參數時,形參變數和實參變數是由編譯系統分配的兩個不同的內存單元。在函數調用時發生的值傳送是把實參變數的值賦予形參變數。在用數組名作函數參數時,不是進行值的傳送,即不是把實參數組的每一個元素的值都賦予形參數組的各個元素。

因為實際上形參數組並不存在,編譯系統不為形參數組分配內存。那麼,數據的傳送是如何實現的呢?在我們曾介紹過,數組名就是數組的首地址。

因此在數組名作函數參數時所進行的傳送只是地址的傳送,也就是說把實參數組的首地址賦予形參數組名。形參數組名取得該首地址之後,也就等於有了實在的數組。實際上是形參數組和實參數組為同一數組,共同擁有一段內存空間。

注意:

數組有兩個特殊的性質。一是不能復制數組;二是使用數組名字時,數組會自動轉化為指向其第一個元素的指針。由於數組不能復制,所以無法編寫使用數組類型形參的函數,因為數組會被自動轉化為指針。




⑧ c語言中數組的下標可以是字元嗎代表什麼意思

C語言數組的下標只能是合法的整型值。
當下標為字元時,有兩種可能:
1
以字元常量作為下標。如a['A'];表示'A'的ascii碼對應的數組偏移量。在實際應用中不常見,但是從語法上來說是合法的。
2
字元本身為變數。如
int
i;
int
a[100];
for(i
=
0;
i
<
100;
i
++)
printf("%d\n",
a[i]);
這里的a[i],下標就是i,本質上i是一個變數,訪問的時候是根據變數值進行訪問對應元素的。