2018 年 11 月 2 日
leetcode 的确是一个不错的网站, 希望能提升自己的算法力
- int* twoSum(int* nums, int numsSize, int target) {
- }
出现的第一个方法, 很久没做 C 的我也懵逼了, 这是函数指针还是指针函数, 首先这是函数确实的, 所以他是有返回值的. 而且返回值是一个指针. 那就是说他肯定是指针函数了.
指针函数顾名思义: 就是指针函数了, 只不过返回的值是指针变量而已, 记住返回指针的函数就好了;
举个栗子: int *f(int a, int b); // 声明指针函数
- // 小写字符转换为大写字符指针函数
- char * upper(char *str) {
- // 先保留初的地址. 因为等会 str 指向的位置会变来变去的.
- char *dest = str;
- // 如果不是非空字符串则进行循环变量转换
- while(*str != '\0'){
- if(*str>='a' && *str <= 'z'){
- // 转为大写
- *str -= 'a' -'A';
- }
- str ++;// 遍历下一个
- }
- return dest;
- }
- int main()
- {
- // 定义一个字符串变量
- char str[] = "gxj";
- // 调用函数
- char *dest = upper(str);
- printf("%s", dest);
- return 0;
- }
结果: GXJ
2 函数指针, 搞懂了指针函数, 函数指针就很简单了
- char str[] = 'gxj';
- // 声明一个函数指针
- char (*lowtoupper)(char *str);
- lowtoupper = upper;
- // 使用函数指针 upper 调用函数
- lowtoupper (str);
结果: GXJ
来源: http://www.bubuko.com/infodetail-2831398.html