c語言中數組做形參,c語言數組形參

本文目錄一覽:

C語言數組作為形參實參的一些疑惑?

void fun(int arr[], int n);

在函數定義的時候,形參int arr[]不是表示某個元素的值,而是告訴編譯器第一個參數是一個數組指針,可以接收實參傳過來的數組地址。

實際上以上定義等價於下面的定義。

1.數組裡面帶元素個數:

void fun(int arr[常數], int n);

這裡的常數可以是任意正整數,實際上編譯器是會忽略,因為這裡只要告訴編譯器我接收的是一個數組指針,至於它有多少個元素不關心,因為實參也只是傳個地址過來。元素個數由參數二控制。至於為什麼要這麼約定可以看下面補充說明。

2.void fun(int *arr, int n);

使用指針,這種方式和題目中的方式是最常用的方式,第一種最不常用。

補充說明(為什麼數組作為函數參數是傳地址,而不是傳每個元素):

設想一下,有一個函數如下

int fun(int nums[1000], int size)

它的參數一要處理1000多個元素的數組,如果是傳值即每個元素,那在函數體內是不是就得再申請1000多個整數的內存,還需要把值從實參那裡複製過來,這是非常耗時間的而且沒有必要,因為在內存的某個塊已經存放了這些數據。只要告訴放在哪個位置,你函數體去那裡找就行了。這裡說的就是傳地址了,只需要傳個數組首地址,然後告訴有多少個元素要處理就OK了。傳地址只需要複製地址給形參,相對傳每個元素快得多。

C語言數組做形參的問題

char

(*p)[n]表示p是指向含有n個元素數組的指針變數;

char

**p表示p是指針變數,指向的類型是指針。

用數組名+「」做實參倒是沒用過

#include

void

Change(char

*a)

{

char

*b=”bca”;

a=b;

}

void

main()

{char

*b=”bca”;

char

a[]=”abc”;

puts(a);

Change(a);

puts(a);

}

c語言c++語言如何用二維數組做形參?

C/C++中,二維數組的第一維的每一個元素都是一維數組。所以,用指向一維數組的指針或用第一維維數空缺的二維數組作為函數的形式參數都能達到目的。設處理數組為int型,舉例代碼如下:

//#include “stdafx.h”//If the vc++6.0, with this line.

#include “stdio.h”

void myprint(int (*p)[5]){//p是指向有5個int型元素的一維數組的指針

//void myprint(int p[][5]){//這樣寫效果是一樣的

    int i,j;

    for(i=0;i3;i++){

        for(j=0;j5;printf(“%3d”,p[i][j++]));

        printf(“\n”);

    }

}

int main(void){

    int a[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};

    myprint(a);

    return 0;

}

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

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

#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\t”, a[i]);

}

printf(“\n\n”);

}

/*

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(“數組排序前列印:\n”);

printfArray(a, num);

//開始對數組進行排序

sortArray(a, num);

printf(“數組排序後列印:\n”);

printfArray(a, num);

system(“pause”);

}

擴展資料:

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

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

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

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

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

注意:

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

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

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

數組名代表著整個數組的地址,如果一維數組的名字作為函數實參,傳遞的是整個數組,即形參數組和實參數組完全相同,是存放在同一存儲空間的同一個數組。這樣形參數組

修改時,實參數組也同時被修改了。形參數組的元素個數可以省略。

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

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183191.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-24 16:27
下一篇 2024-11-24 16:27

相關推薦

  • Python導入數組

    本文將為您詳細闡述Python導入數組的方法、優勢、適用場景等方面,並附上代碼示例。 一、numpy庫的使用 numpy是Python中一個強大的數學庫,其中提供了非常豐富的數學函…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python去掉數組的中括弧

    在Python中,被中括弧包裹的數據結構是列表,列表是Python中非常常見的數據類型之一。但是,有些時候我們需要將列表展開成一維的數組,並且去掉中括弧。本文將為大家詳細介紹如何用…

    編程 2025-04-29
  • Python操作數組

    本文將從多個方面詳細介紹如何使用Python操作5個數組成的列表。 一、數組的定義 數組是一種用於存儲相同類型數據的數據結構。Python中的數組是通過列表來實現的,列表中可以存放…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Python二維數組對齊輸出

    本文將從多個方面詳細闡述Python二維數組對齊輸出的方法與技巧。 一、格式化輸出 Python中提供了格式化輸出的方法,可以對輸出的字元串進行格式化處理。 names = [‘A…

    編程 2025-04-29

發表回復

登錄後才能評論