一、值传递,形参的修改不会影响到实参
#include <stdio.h> void jiaohuan(int a,int b) { int tmp = a; a = b; b = tmp; printf("a=%d,b=%d", a, b); } int main() { int m = 1; int n = 2; jiaohuan(m, n); printf("m=%d,n=%d", m, n); system("pause"); return 0; }
运行结果:
二、址传递,传递变量的地址
#include <stdio.h> void jiaohuan(int *a,int *b) { int tmp = *a; *a = *b; *b = tmp; } int main() { int m = 1; int n = 2; jiaohuan(&m, &n); printf("m=%d,n=%d\n", m, n); system("pause"); return 0; }
运行结果:m=2,n=1
三、形参中的数组,不是数组,就是普通的指针
void aiyou(int a[])
void aiyou(int *a)
void aiyou(int a[10])
上面三个函数的参数都表示形参是一个数组
void aiyou(char *p[])
void aiyou(char ** p)
void aiyou(char *p[10])
上面三个函数的参数都表示形参是一个指针数组
四、查找字符串出现的次数
#include <stdio.h> int main() { char* p = "13aiyou4565aiyou870aiyou867456aiyou2345"; int i = 0;//计数器 char* tmp = NULL; while (1) { //查找匹配的字符串,找打返回地址 tmp = strstr(p, "aiyou"); if (tmp==NULL) { break;//跳出循环 } else { i++;//找到后+1; p = tmp + strlen("aiyou");//找到后,指针从下一处开始找 } } printf("aiyou出现的次数:%d\n", i); system("pause"); return 0; }
运行结果:aiyou出现的次数:4
五、去首尾空
#include <stdio.h> #include <string.h> int main() { char* p = " aiyoubucuo "; printf("源数据:%s\n", p); char* s = p;//首元素地址 char* w = p + strlen(p) - 1;//尾元素地址 //去首空,首地址不为且没有到尾地址 while (*s==' '&&*s!='\0') { s++; } //去尾空,尾地址不为空且没有到首地址 while (*w==' '&& *w!=p) { w--; } int n = w - s + 1; printf("去首尾空后的长度:%d\n", n); char a[100] = "aaaaaaaaaaaaaaaaaaa"; strncpy_s(a, strlen(a), s,n); a[n] = 0; printf("去首尾空结果:%s\n", a); system("pause"); return 0; }