簡體   English   中英

c中作為函數參數的“ char [] name”和“ char name []”之間的區別

[英]Difference between “char[] name” and “char name[]” as a function's argument in c

當定義這樣的函數時:

void  myFunction(arguments){
   // some instructions
}

使用char[] namechar name[]作為函數的參數之間有什么區別? 為什么不使用指向char的指針呢?

一個( char[] name )不會編譯,因為它是錯誤的語法。

函數實現的參數定義中的數組子腳本轉到(強制)參數的名稱。

正確的語法是第二個

char name[]

例:

void p(char[]); /* prototype */

void p(char name[]) /* implementation */
{
}

但是, char[] name將被視為無效語法。

在Java和C#等其他語言中, []括號的位置只是語法上的糖,不會以任何方式影響程序。

C是較老的語言,沒有這種靈活性。 必須在名稱后用方括號聲明數組。

至於何時以及為什么要使用指針,請在此處閱讀。

您將得到編譯錯誤。

0.c:3:14: error: expected ‘;’, ‘,’ or ‘)’ before ‘a’
 int f(char []a){
              ^

不可能編譯這樣的代碼:

#include <stdio.h>

int f(char []a){
}

main(){
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM