7-函数指针_字符串转整数练习

来源:互联网 发布:js 局部打印pdf 编辑:程序博客网 时间:2024/06/05 11:07
当参数为:一个普通变量时
  • 变量的值 : 复制传参
  • 变量的地址 : 地址传参
  • 函数 : 获取两个变量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 一一对应.
0 0
原创粉丝点击