當(dāng)參數(shù)為:一個(gè)普通變量時(shí)
- 變量的值 : 復(fù)制傳參
- 變量的地址 : 地址傳參
- 函數(shù) : 獲取兩個(gè)變量num1 = 123, num2 = 456;
- 完成數(shù)值交換 ==> num1 = 456, num2 = 123;
練習(xí) :
輸入一個(gè)字符串 "1234" , 得到整型值 1234 ;
#include <stdio.h>
int fun(char *p)
{
int num = 0;
while(*p != '\0')
{
if(*p >= '0' && *p <= '9')
{
num = num*10 + *p - '0';
}
else
return -1;
p++;
}
return num;
}
int main(int argc, const char *argv[])
{
char src[128] ;
int ret ;
printf("請(qǐng)輸入一個(gè)只含有數(shù)字的字符串: ");
gets(src) ;
ret = fun(src);
if(ret == -1)
{
printf("輸入有誤, 退出\n");
}
else
{
printf("結(jié)果值為 : %d\n",ret);
}
return 0;
}
函數(shù)指針:
#include <stdio.h>
void (*fun(void (*)(int),int))(int); // void (*)(int) fun (void (*)(int), int); 函數(shù)聲明
void fun1(int);
int main(int argc, const char *argv[])
{
int num = 123;
fun(fun1, num);
return 0;
}
void (*fun(void (*p)(int), int n))(int)
{
p(n);
return p;
}
void fun1(int num)
{
printf("num = %d\n",num);
}
函數(shù)指針:
- 函數(shù)指針 : 函數(shù)名 代表的為 函數(shù)的入口地址.
-
void (*p)(int)
==> void fun(int)*p
- 數(shù)據(jù)類型 * 指針變量名 ;
- 定義函數(shù)指針; 直接把函數(shù)名替換為 (*指針變量名)
- 注意: ()不能省略.
命令行傳參 :
int main(int argc, const char *argv[]) ;
-
argc
: 命令行傳入?yún)?shù)的個(gè)數(shù) (包括 ./a.out)
-
argv[]
: 傳入?yún)?shù)的首地址.
malloc函數(shù) :
#include <stdlib.h>
void *malloc(size_t size);
- 參數(shù) :size , 需要申請(qǐng)的內(nèi)存空間的大小, 以字節(jié)為單位.
- 說(shuō)明 : size_t : unsigned int
- 返回值 : 成功, 返回值為申請(qǐng)空間的首地址 .
- 失敗或者size 為 0 時(shí) , 返回值為 NULL .
釋放函數(shù)
void free(void *ptr)
- 釋放ptr所指向的內(nèi)存空間.
- 注意: 告訴系統(tǒng), 這段內(nèi)存空間可以繼續(xù)分配.
* 全局變量 : 謹(jǐn)慎使用.
* 指針函數(shù) : 返回值類型為指針的函數(shù).
* malloc 與 free 一一對(duì)應(yīng).
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者