2020.10.24 14课 指针(三)指针函数 函数指针(群发软件)

指针三

一二维数组名作为函数参数

void showmap(int mapp[][10]){}
func(const int array[])
返回指针的函数(指针函数)
//循环,进行判断 如果*—Str的值与_Val的值是一样的,那我们就返回这个_Str的地址

字符类型的指针         字符数组     一个字符
char* Mystrchr(const char*_Str,int _Val){
    if(_Str !=NULL){
        while(*_Str++ !='0'){
            if(*_Str == _Val){
                return(char*)_Str
            }
            
        } 
    }
}
指向函数的指针(函数指针)
1:函数的函数名就是指针就是内存中占据空间的编号
2:如何通过P变量存储的指针编号去调用函数呢?
void show(){printf("2131231")};

int main(){
    int P=show;
   ((void(*)())p)();
    return 0;
}
//P存储的show函数的地址
//show函数是void()
//(void(*)()) (void(*))代表void类型的指针  ()代表函数
((void(*)())p)(); 解引用,类型强转

第二种 void(*p)()=show; 定义
    *p指向的就是void show(); 中的show
计算器
int add(int x,int y){return x+y;}
void show(int x,int y,int (*pFunc)(int x,int y)){//回调函数
    printf("%d\n",pFunc(x,y));
}  
int main(){
    show(2,3,add);
    //也可以吧add换成任意自定义算法函数名
}
函数的函数名就是地址
类型名+变量名+(函数参数);
 int    add     (int x,int y);
 int    (*p)   (int x,int y)
    

三个函数 memset,memcpy,memmove

内存设置,内存拷贝,内存移动
char str[128];
memset(str,0,128);//清空,吧str数组中占据的128字节全部清空
    
定义 说明
int i 定义整形变量
int *p 定义一个指向int的指针变量
int a[10] 定义一个int数组
int *p[10] 定义一个指针数组,其中每个数组元素指向一个int型变量的地址
int (*p)[10] 定义一个数组指针,指向int [10]类型的指针变量
int func() 定义一个函数,返回值为int型
int *func() 定义一个函数,返回值为int *型 指针函数
int (*p)() 定义一个指向函数的指针,函数的原型为无参数,返回值为int
int **p 定义一个指向int的指针的指针,二级指针

指针变量 变量指针

指针数组 数组指针

指针函数 函数指针

argc 使用软件时参数的个数,

argv 参数的指令

//指针的骚操作   三目运算符!!! bat的面试题

/*	
	1.c语言的三目运算和c++有区别吗???
				有区别,c不能赋值,c++能赋值
	2.如果有区别如何实现c语言和c++一样的效果???
		*(a < Data[5] ? &a : &Data[5]) = 10086;
*/

int Data[10] = { 10, 50, 30, 40, 50, 70, 80, 90, 100 ,1};

int a =Data[0];

int c = 0;
//for (int i = 0; i < 10; i++){//*值的地址 解引用=赋值 
*(a < Data[5] ? &a : &Data[5]) = 10086;
//}
printf("%d\n", a);
//printf("%d\n", c);
posted @ 2020-11-11 23:14  鹤儿哈  阅读(70)  评论(0编辑  收藏  举报