7-函數指針_字符串轉整數練習

當參數爲:一個普通變量時
  • 變量的值 : 複製傳參
  • 變量的地址 : 地址傳參
  • 函數 : 獲取兩個變量num1 = 123, num2 = 456;
  • 完成數值交換 ==> num1 = 456, num2 = 123;

練習 :

輸入一個字符串 “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("請輸入一個只含有數字的字符串: ");
    gets(src) ;
    ret = fun(src);

    if(ret == -1)
    {
        printf("輸入有誤, 退出\n");

    }
    else
    {
        printf("結果值爲 : %d\n",ret);
    }
    return 0;
}
函數指針:
#include <stdio.h>

void (*fun(void (*)(int),int))(int); // void (*)(int)  fun (void (*)(int), int); 函數聲明
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);
}
函數指針:
  • 函數指針 : 函數名 代表的爲 函數的入口地址.
  • void (*p)(int) ==> void fun(int)*p
  • 數據類型 * 指針變量名 ;
  • 定義函數指針; 直接把函數名替換爲 (*指針變量名)
  • 注意: ()不能省略.
命令行傳參 :
  • int main(int argc, const char *argv[]) ;
  • argc : 命令行傳入參數的個數 (包括 ./a.out)
  • argv[] : 傳入參數的首地址.
malloc函數 :
  • #include <stdlib.h>
  • void *malloc(size_t size);
  • 參數 :size , 需要申請的內存空間的大小, 以字節爲單位.
  • 說明 : size_t : unsigned int
  • 返回值 : 成功, 返回值爲申請空間的首地址 .
  • 失敗或者size 爲 0 時 , 返回值爲 NULL .
釋放函數
  • void free(void *ptr)
  • 釋放ptr所指向的內存空間.
  • 注意: 告訴系統, 這段內存空間可以繼續分配.
* 全局變量 : 謹慎使用.
* 指針函數 : 返回值類型爲指針的函數.
* malloc 與 free 一一對應.
發佈了38 篇原創文章 · 獲贊 3 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章