當前位置:首頁 » 編程語言 » c語言數組參數

c語言數組參數

發布時間: 2022-05-01 18:15:10

1. c語言數組變數作為函數參數

將數組傳遞給函數後,數組就會退化為指針

voidfun(intx,intpp[],int*n)
voidfun(intx,int*pp,int*n)
//這兩種寫法是等價的
pp[j++]=j;//這句寫錯了
//要保存到pp里的是能整除的整數,而不是計數器j,如果這么寫,那麼pp的值肯定是{0,1,2,3,4,5,...}
//應該改成
pp[j++]=l;//L才是被整除的整數,要保存的是這個
*n=j;//n作為一個指針,負責傳出得到的數字的數量,j是計數器,當所有的計算完畢後,j的值自然是這些數字的數量

2. C語言中,數組做函數參數如何才能按值傳遞

傳數組給一個函數,數組類型自動轉換為指針類型,因而傳的實際是地址。

void func(int array[10])
void func(int array[])
void func(int *array)

所以以上三種函數聲明完全等同。

實際情況是,數組做參數,完全無法按值傳遞。這是由C/C++函數的實現機制決定的。

下一個問題是:為什麼偏要按值傳遞呢?當要在一個函數內使用一個數組時,傳一個指針進去不就行了?只要能訪問到我們所要的數據並對其進行操作,何苦鑽牛角尖。

3. c語言怎麼將數組作為函數參數傳入

一維數組的元素作為函數實參,與同類型的簡單變數作為實參一樣,是單向的值傳遞,即數組元素的值傳給形參,從而形參是改變不影響實參

數組名代表著整個數組的地址,如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組和實參數組完全相同,是存放在同一存儲空間的同一個數組。這樣形參數組
修改時,實參數組也同時被修改了。形參數組的元素個數可以省略。
#include<stdio.h>

//數組作為函數參數,可以省略元素個數
//數組作為函數參數,傳遞是整個數組的地址,修改了函數形參數組元素的值,會影響到外面的實參數組
void change(int array[])
{
printf("array ==%p\n",array);

array[0] = 100;
}

int main()
{
int ages[6] = {10,11,13,15,11,18};

printf("array ==%p\n",ages);

change(ages);

printf("%d\n",ages[0]);

return 0;

}

輸出結果為: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100

4. c語言,數組名作函數參數問題。

這道題剛剛做到了,正確答案是c
牛客網大佬給出的解答,A,必須在主調函數中說明此數組的大小,不一定例如傳遞一個char類型的字元串,就不需要。所以A是錯的

5. C語言 數組做參數

strcmp的參數里p[j]和p[j+1]是指針數組的元素,裡面存放的是字元串的首地址。在c語言中,字元串都是用首地址來表示的,所以可以吧指針數組中的地址值說成是代表字元串。

6. c語言 數組作為參數傳遞

調用時把【】去掉,表示掉用這個數組的所有元素,數組的名稱表示數組第一個元素的地址。
數組的定義可以寫成:
int
table[]={1,2,3,}
或者table[3],不能寫成table[],因為系統在定義數組時就給數組分配了地址,table[]沒有確定元素的個數,不能分配地址空間。
但是作為形參,可以這樣寫,void
tab(int
table[])
,不知道為什麼,呵呵

7. 關於c語言中數組作為函數參數的函數之間調用問題

1、新建一個數組作為參數項目,如圖所示:

8. C語言聲明數組參數的問題

看下面代碼:

int main()
{
int a[5]={3,6,4,2,5};
char *ptrChar="hello world";//ptrChar是char類型的指針,指向內存空間
int *ptrInt=a;//ptrInt是指向int類型的指針
printf("sizeof(char):%d\n",sizeof(char));
printf("sizeof(int):%d\n",sizeof(int));
printf("sizeof(ptrChar):%d\n",sizeof(ptrChar));
printf("sizeof(ptrInt):%d\n",sizeof(ptrInt));
printf("value of ptrChar is:%d\n",ptrChar);
printf("value of (ptrChar+1) is:%d\n",ptrChar+1);
printf("value of ptrInt is:%d\n",ptrInt);
printf("value of (ptrInt+1) is:%d\n",ptrInt+1);
system("pause");
return 1;
}

程序運行結果如下:

從程序的運行結果可以得出:

指針本身是一個變數,它所存儲的是另一個變數的地址,指針變數所佔的內存是4個位元組,這與它所指向的變數所佔的內存空間大小是沒有關系的,指針變數本身和它所指向的內存空間是完全獨立的

9. C語言中數組作為函數參數

C中數組名代表該數組的首地址,
char
s[]="abc";
s代表的就是『a』在內存中的地址
以地址作參數
,實參和形參同時改變

10. 在C語言中,數組作為參數,是怎樣在函數之間傳遞

很簡單的,數組作為函數參數傳遞的時候只要是數組名就可以了,因為數組名本身就是數組的首地址 .給個程序看看

#include<stdio.h>
#define N 3
int array[N][N];
void main()
{
//在主函數內聲明被調函數
void convert(int array[][3]);
int i,j;
printf("輸入數組:\n");
for(j=0;j<N;j++)
for(i=0;i<N;i++)
scanf("%d",&array[i][j]);
printf("\n");
for(j=0;j<N;j++)
{
for(i=0;i<N;i++)
printf("%d\t",array[i][j]);
printf("\n");
}
//調用矩陣轉置函數
convert(array);
printf("\n");
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%d\t",array[i][j]);
printf("\n");
}
}
void convert(int array[][3])
{
int i,j,t;
for(i=0;i<N;i++)
for(j=0;j<N;j++)//設置數組中轉置矩陣元素交換
{
t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}

熱點內容
android文件夾重命名 發布:2025-05-15 01:13:50 瀏覽:481
cns腳本 發布:2025-05-15 01:13:38 瀏覽:722
數據結構與演算法筆試題 發布:2025-05-15 01:04:20 瀏覽:417
搜狗輸入法如何直接編輯配置文件 發布:2025-05-15 00:51:47 瀏覽:668
電箱都有哪些配置 發布:2025-05-15 00:30:21 瀏覽:74
安卓qq邀請碼在哪裡尋找 發布:2025-05-15 00:02:04 瀏覽:35
三菱fx編程口 發布:2025-05-15 00:01:23 瀏覽:810
醫院招商引資宣傳片腳本 發布:2025-05-15 00:01:21 瀏覽:368
linuxcftp伺服器 發布:2025-05-14 23:58:18 瀏覽:718
探岳什麼配置才有駕駛模式選擇 發布:2025-05-14 23:53:17 瀏覽:146