C語言指標變數作為函式引數

2021-06-28 04:50:04 字數 2074 閱讀 5616

有讀者反饋,不理解字元陣列和普通陣列的區別,下面筆者作一下解答。

實際上,字元陣列和普通陣列一樣,沒有本質區別。

請大家注意陣列型別的含義:資料型別指的是陣列所包含的元素的型別,而不是陣列名的型別,陣列名永遠是乙個指標,指向第乙個元素的位址,即陣列首位址。

字元陣列的每個元素都是char型別,整型陣列的每個元素都是int型別。

scanf() 和 printf() 函式有一種格式化字串 %s 可以用來整體輸入輸出字元陣列,但是沒有特定的格式支援 int 陣列整體陣列輸出。

請看下面的**:

#include

intmain

(void);

char

str= ""

;int

i;// num, str 是位址,由系統分配,與陣列本身沒有任何關係

printf

("num = %d, str = %d\n"

, num,

str);

// num, str 指向陣列首位址

printf

("&num[0] = %d, &str[0] = %d\n"

, &num[0],

&str[

0]);

// num 等價於 &num[0]if(

num ==

&num[0])

// str 等價於 &str[0]if(

str ==

&str[0])

// 要為某個陣列元素賦值,必須取該元素的位址

printf

("input a number: "

);scanf

("%c", &

str[

0]);

// scanf() 從 stdin 緩衝區讀取資料

// fflush() 用來清空緩衝區,讓 scanf() 重新從控制台讀取

// 關於 fflush() 詳細解釋請檢視:

c語言fflush()

fflush

(stdin);

printf

("input a char: "

);scanf

("%c", &

str[

0]);

fflush

(stdin);

// 使用 scanf() 為陣列賦值時

// 可以使用 %s 為字元陣列整體賦值

// 但是沒有特定的格式化字串來為 int陣列整體賦值,必須乙個乙個賦值

printf

("input a string: "

);scanf

("%s"

, str);

// str為位址,不需加&

fflush

(stdin);

printf

("input 10 number: "

); // 以空格為間隔

for(i=0

; i<10;

i++)

// 取前5個元素作為示例

printf

("the final num = %d, %d, %d, %d, %d\n"

, num[0],

num[1],

num[2],

num[3],

num[

4]);

printf

("the final str = %s\n"

, str);

return 0;

} 執行結果:

num = 1638176, str = 1638164

&num[0] = 1638176, &str [0] = 1638164

num = &num[0]

str = &str[0]

input a number: 5↙

input a char: e↙

input a string: c語言中文網↙

input 10 number: 12 34 56 78 90 23 45 78 09 54↙

the final num = 12, 34, 56, 78, 90

the final str = c語言中文網

C語言 指標變數作為函式引數詳解

在c語言中,函式的程式設計客棧引數不僅可以是整數 小數 字元等具體的資料,還可以是指向它們的指標。用指標變數作函式引數可以將函式外部的位址傳遞到函式內部,使得在函式內部可以操作函式外部的資料,並且這些資料不會隨著函式的結束而被銷毀。像陣列 字串 動態分配的記憶體等都是一系列資料的集合,沒有辦法通過乙...

指標作為函式引數,C語言指標作為函式引數詳解

include void swap int a,int b 函式宣告 intmain void void swap int a,int b 大家想一下,執行這個程式是否能互換 i 和 j 的值?不能!i 還是3,j 還是5。因為實參和形參之間的傳遞是單向的,只能由實參向形參傳遞。被調函式呼叫完之後系...

11 19C語言 指標變數作為函式引數

今天學習c語言的小結 一 指標變數作為函式引數 函式的引數不僅可以是整型 實型 字元型等資料,還可以是指標型別。它的作用是將乙個變數的位址傳送到另乙個函式中。首先看一下練習題 輸入a和b兩個整數,按先大後小的順序輸出a和b。下面是實現演算法除錯的程式 思路 swap是使用者定義的函式,它的作用是交換...