自学内容网 自学内容网

C语言中定义指针,函数指针这种类似的变量(个人纪录)

C语言中定义各种变量

//1、定义一个指针
int *p;   
//定义一个数组   
int nums[3] = {1, 2, 3};     
//2、定义一个指针数组     
// 顾名思义 是一个数组,数组里面都是存的指针变量。     

int *ptrArray[10]; // 这是一个指针数组,包含10个指向整数的指针     
char *charPtrArray[5]; // 这是一个指针数组,包含5个指向字符的指针      

//3、定义一个数组指针      
int (*ptrToArray)[10]; // 这是一个指向包含10个整数的数组的指针      

//4、定义一个指针函数       
//指针函数就是这个函数,返回以一个指针,函数可以返回任何值,当然也可以返回指针。       
char* IntToString(int i){       
   char str[100];       
   return str;       
}
//这是一个指针函数,但是这个函数很不入眼,因为这个数组str 是存储在栈上的,等这个程序运行结束,这个数组就不见了,指向这个数组的指针自然也失去了意义。不过这种就是一个指针函数。

//可以看下面这个,使用malloc来获取空间,除非你手动使用free释放,或者系统重启,不然这个空间就会一直占用着。

#include <stdlib.h>         
  
char* IntToString(int i) {         
    char *str = (char*)malloc(20 * sizeof(char)); // 分配足够的空间,注意包括终止符'\0' ,使用malloc ,即使函数结束了,也会保存这片空间。

    if (str == NULL) {         
        return NULL; // 内存分配失败         
    }  
    sprintf(str, "%d", i);       
    return str;      
}  
  
// 调用者需要负责释放返回的字符串    


//5、定义一个函数指针 
// 本质还是一个指针,指向一个函数, 对于函数,我们正常确认的有两点,一是函数的返回值,二是函数的参数。

int (*fun)(int *p, int len);  //函数的参数是 一个指针,一个是int整数。返回值是一个int型
//
//函数的参数是一个int整数, 返回的是一个指针char类型的指针。
int (*p)(int a, int b); //函数参数是两个int 整数, 返回的是一个 int 类型
int * (*p)(int *p, int n); //函数的参数是两个,一个是int 整数,一个是 指针变量。 返回值是一个int型指针。

//小诀窍就是,中间的 (*fun) 表示这个是一个指针。 (int *p, int len) 表明是一个函数指针。   返回值看最前的面的。  int 就说明是一个int型。

原文地址:https://blog.csdn.net/ZMXdecode/article/details/142414054

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!