ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

学习嵌入式Day14:C语言之指针

学习嵌入式Day14:C语言之指针 一、字符串操作函数自制函数字符串复制char *Strcpy(char *dest, const char *src) { char *ret dest; while ((*src) ! \0) { *dest *src; dest; src; } *dest \0; return ret; }//将src的前n个字符拷贝到dest中 char *Strncpy(char *dest, const char *src, int n) { char *ret dest; while ((*src) ! \0 n ) { *dest *src; dest; src; --n; } while (n ! 0) { *dest \0; --n; dest; } return ret; }字符串拼接char *Strcat(char *dest, const char *src) { char *ret dest; while (*dest ! \0) { dest; } while (*src ! \0) { *dest *src; dest; src; } *dest \0; return ret; }//将src的前n个字符拼接到dest中 char *Strncat(char *dest, const char *src, int n) { char *ret dest; while (*dest ! \0) { dest; } while (*src ! \0 n) { *dest *src; dest; src; --n; } while (n ! 0) { *dest \n; dest; --n; } return ret; }字符串比较int Strcmp(const char *s1, const char *s2) { int ret 0; while (*s1*s2 *s1!\0 *s2!\0) { s1; s2; } ret *s1-*s2; return ret; }//将s1和s2中的前n个字符进行比较 int Strncmp(const char *s1, const char *s2, int n) { int ret 0; while (*s1*s2 *s1!\0 *s2!\0 n-10) { s1; s2; --n; } ret *s1-*s2; return ret; }二、指针操作二维数组整型int a[3][4] {1,2,3,4,5,6,7,8,9,10,11,12};p a[0];//a[0]是首元素a[0]的类型是int[4]这种数据类型正确写法int (*p) [4] a[0];*p a[0] //*p 等价于 a[0] 这个一维数组的数组名首元素地址 等价于a[0][0] 数据类型是int * *p 1 相当于加了一个 int 基类型的大小a[i][j] *(*(pi)j)字符型char s[5][10] {hello,world,english,china,america};char(*p)[10] s;通过指针变量p想访问到字符串 实际上是通过p得到字符串首元素的地址(因为字符串在内存中也是按照数组的方式存放的获得首元素地址就可以获得到整个字符串)char * s1 hello1; //s1数据类型 char *char * s2 hello2;char * s3 hello3;char * s4 hello4;char* s[5]; //用来存放 s1 s2 s3 s4指针数组数组中元素的类型都是指针类型 char *char **p //二级指针保存的是 一级指针变量的地址三、总结今天重点学习了指针操作字符串和二维数组在字符型二维数组中会用到二级指针 在编写快速排序代码的时候要弄清楚需要的是地址还是字符串。递归结束条件应当使用地址范围把字符串当成了判断条件虽然编译的时候没有报错但排序的效果并未达到。以后需要格外注意这一点时刻保持对数据类型的清晰判断。
返回列表