c語言基礎 3 陣列和指標作為實參和形參的問題

2021-08-21 08:46:09 字數 2073 閱讀 5171

字串

char a="abc";

printf("%s",a);

fgets(a,100, stdin) //安全的字串輸入函式

printf("%s",a);

scanf("%*[^\n]"); //兩個scanf清空輸入快取

scanf("%*c");

int 值作為實參    指標作為形參

void xchange1(int *n1,int *n2)      形參

int num1,num2;

xchange1(&num1,&num2) 實參

指標作為實參     指標作為形參

void  print(int *p)                 形參

int *a=null;;

print(a); 實參

陣列作為實參     指標作為形參

void  print(int *p,int size)                   形參             

int a[4];

print(a,4); 實參

void cpy(char *first, const char *second) 形參

char a[10]="abc";

char b[10]={};

cpy(b,a); 實參

指標作為實參    二級指標作為形參

void xchange1(char **s)      形參

char *p=null;

xchange1(&p); 實參

陣列作為實參    陣列作為形參                          陣列做形參的時候一定要帶上陣列的長度

void print(int arr[3][4], int x, int y)    //形參       一定要帶上陣列的長度

int arr[3][4];

print(arr, 3, 4); // 實參

void print(int *arr, int n) //形參 一定要帶上陣列的長度

int array[10];

print(arr,10); // 實參

陣列指標

宣告語法:資料型別 (*指標變數名)[組內元素個數];

int (*p)[10];

int (*p)[ ][10];

*(*(二維陣列指標+i)+j) 得到的是第i組第j個元素的值

*(一維陣列+i)  得到資料第i個元素的值

int a[ 10 ];

*(a+1) = a[1];

%d               int  (十進位制)

%s char *

%c char

%x 十六進製制

%o 八進位制

%p 位址

%u unsigned

%ld long int

%lld long long int

(%f) / (%g) float

(%lf ) / (%lg) double

C語言 以指標作為實參的問題

以指標作為實參時,實參p傳遞給形參p1的其實是p的拷貝,所以在區域性函式中改變形參p1的指向對身處主函式的p是無影響的,但是因為p1是p的拷貝。所以他們的指向是相同的,所以可以通過p1修改了那塊記憶體的值。如果實參p的指向為空,也就是說p是乙個空指標的話,那麼它就沒有指向某塊記憶體。形參也就無法操作...

c語言基礎必備 指標陣列 and 陣列指標

對於指標陣列和陣列指標,單從字面上似乎很難分清它們是什麼,先來看看指標陣列和陣列指標各自的定義形式。指標陣列的定義形式為 是乙個陣列 型別名 陣列名 陣列長度 如 int p 8 陣列指標的定義形式為 是乙個指標 型別名 指標名 陣列長度 如 int p 8 現在來分析上述兩種定義形式,通過 int...

C語言基礎 指標陣列與陣列指標

一 指標陣列 在這一節中我們來學習乙個陣列,這個陣列比較特殊,也比較普通。說它特殊是因為這個陣列是指標的陣列,也就是說我們有乙個陣列,這個陣列裡存放的變數型別是指標型變數 說它普通是因為陣列變數其實與其它普通變數沒有什麼區別,指標變數就是一種可以存放記憶體位址的變數,所以它們也可以被定義成一串連續的...