day15 C语言 指针3
13.字符指针的常见错误#includestdio.h#if 0int main(int argc, char **argv){//char *phello; //error,会发生段错误 hello在内存中只有一份只能读取不能修改char p[]hello; //char [] 开辟空间会把hello复制一份给数组printf(%s\n,p);*(p0)e; //如果是指针操作是错误不能修改常量p[0]e; //如果是数组操作是对的修改的是数组里的内容不是字符串常量printf(%s\n,p);return 0;}#endifvoid swap(int *a,int *b){int *t; //int t; //此处*t是野指针没有初始化所以会发生段错误*t*a; //t*a;*a*b;*b*t; //*bt}int main(int argc, char **argv){int a9;int b12;swap(a, b);return 0;}14.函数指针指针函数1.指针函数函数的返回值是指针类型。eg: char *strcpy(char *dest,const char *src);strcpy 这个函数的返回值就是一个指针。 成功指针指向 dest。不能返回是局部作用域的指针。会被释放希望函数可以连续调用在同一个语句里面。希望返回一端内存区域数组首地址、堆空间egchar *mystrcat(char *dst,char *src){char *tempdst;while(*dst){dst;}while(*src){*dst*src;dst;src;}*dst\0;returntemp; //返回数组首地址}int main(int argc, char **argv){char str1[100]hello;char str2[100]ok;char str3[100]{0};mystrcat(str3, mystrcat(str1,str2)); //函数可以连续调用在同一个语句里面。printf(str3 is %s\n,str3);return 0;}2.函数指针本质指针变量函数指针指向一个函数前面介绍的指针基本都是指数据函数名是地址值。里面存储的代码 对数据进行加减乘除操作的。目的避免代码的重复方便后期代码的拓展函数功能的解耦合回调函数把一个函数当作参数传给另一个函数被传递的这个参数函数指针/回调函数被动调用。主调函数只是传参函数。eg1int add(int a,int b){return ab;}int main(int argc, char **argv){//p是函数指针 add不能写为add因为不是对add函数的调用//定义函数指针p存储add的地址 类似于 int a[10]0; int *pa;int (*p) (int,int)add;int a12;int b20;int ret0;retadd(a,b);printf(add is %d\n,ret);retp(a,b); //函数本身就算地址 不用加* 通过函数指针对函数的调用printf(add is %d\n,ret);return 0;}eg2int div3(int num) // int (*) (int){return 0num%3;}void find_num(int *a,int size,int (*fun) (int)) //回调函数{for(size_t i0;isize;i){if(fun(a[i])) //if(div3(a[i])){printf(%d\n,a[i]);}}}int main(int argc, char **argv){int a[10]{0};fill_array(a,10);//find_num3(a,10);find_num(a,10,div3);return 0;}15.typedef关键字取别名给数据类型取别名1.普通数据类型取别名typedef 老的数据类型名 新的数据类型名typedef unsigned char u8;typedef unsigned short u16;typedef char s8;int main(int argc, char **argv){u8 a; //unsigned charu16 b; //unsigned shorts8 c; //charreturn 0;}2.简化函数指针的写法typedef int* (*PFUN)(int,int,char*);int* func(int a,int b,char* c) // func的类型int* *(int ,int ,char* ){return NULL;}int func2(int a,int b,PFUN pfun){char str[]{0};pfun(1,2,str);return 0;}3.和结构体有关
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2614691.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!