C語言函式間傳陣列和指標注意問題

2021-10-12 08:45:39 字數 796 閱讀 4674

作為一名c語言初學者,今天在看c primer plus的時候腦袋一熱突發奇想:是否可以在傳遞陣列的時候少傳遞乙個引數n呢?

void

array

(int a[

], int n)

;

為了省略這個n,我在函式裡用了以下語句

void

array

(int a)

結果顯而易見出了問題,debug半天才找出來。

傳遞的指標是陣列的首位址,sizeof( a )這種方式是得不到陣列容量的。

具體原因如下:

#include

#include

//malloc的原型

所以還是老老實實傳2個引數,第乙個引數是首位址,第二個引數為陣列大小

void

array

(int a[

], int n)

;

C語言 給函式傳值和傳指標

傳值和傳指標,其實都是傳值 今天在完成資料結構作業時,一直無法給鍊錶 帶頭結點 插入新節點,一度以為是listinsert函式寫錯了,最後在leetcode群裡提問才知道,原來是initlist函式的問題 include include typedef int elemtype typedef st...

C語言 函式傳參 傳值 傳指標 傳指標的指標

本文參考這兩篇文章 文章 一 文章二。在學習資料結構中建立單鏈表的時候,疑惑 已經定義了node,用到結構體指標的時候直接用 node就好了,為什麼還要再定義乙個 linklist呢,為什麼傳參的時候又要用linklist l呢?下面我們就來循序漸進,由淺入深來解決問題,這裡舉兩個例子作為比較。首先...

C語言 指標陣列和指標陣列 函式指標和指標函式

在c語言中最令然頭疼的莫過於指標 特別是指標和陣列符號一起出現的 傻傻搞不清楚的原因主要在於運算子的優先順序沒有搞清 指標的運算子 陣列運算子,函式運算子 陣列元算符 運算優先順序和函式運算子 或者說強制改變運算順序符號 都是位於第一優先順序的 而我們的指標運算子則是第二優先順序 所以當出現 int...