不知不觉已经过了三周了,说实话感觉啥也没学,因为感觉啥也不会,函数指针,指针函数都要把脑子绕晕了,结构体也要上完了,下周就要开始学习数据结构了,原计划还是想晚自习下课去健个身,现在哪来的时间健身哟,下了晚自习还得留教室多学一会儿,没办法好多东西不懂只能去多看看了,每天留的作业也很难,好比上课教你的是1+1=2,晚上作业让我们写的就是求方程,只能慢慢来了,好啦来看看这周学了哪些代码(部分)吧。
回调函数降序输出
#include <stdio.h>
void ptr(int *ch,int len)
{
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len-1-i; j++)
{
if (ch[j]>ch[j+1])
{
int temp = ch[j];
ch[j]=ch[j+1];
ch[j+1]=temp;
}
}
}
}
void str(void (*thing)())
{
thing();
}
int main(int argc, char const *argv[])
{
int ch[5]={3,8,2,0,5};
int len=5;
int i=0;
str(ptr);
ptr(ch,5);
for (int i = 0; i < 5; i++)
{
printf("%d",ch[i]);
}
return 0;
}
堆,栈
#include <stdio.h>
int a =10;
int buf[1024*1024*8]={100};
int main(int argc, char const *argv[])
{
int a=20;
printf("%d\n",a);
printf("%d\n",buf[0]);
{
int a =1000;
printf("%d\n",a);
}
return 0;
}
typedef起别名
#include <stdio.h>
typedef int (*q)(int,int);//拿q替换掉了int(*)(int,int)。
int add(int a,int b)
{
return a+b;
}
int main(int argc, char const *argv[])
{
int (*p)(int a,int b)=add;
printf("%d\n",p(10,20));
q ch =add;//拿ch替换掉了int(*)(int,int)和上面int(*p)(int a,int b)等价
printf("%d\n",ch(20,30));
return 0;
}
输入俩个数进行加减乘除取余的运算
#include <stdio.h>
typedef struct
{
double (*add)(double,double);
double (*sub)(double,double);
double (*mul)(double,double);
double (*div)(double,double);
double (*mod)(double,double);
}Calculator;
double add(double a,double b)
{
return a+b;
}
double sub(double a,double b)
{
return a-b;
}
double mul(double a,double b)
{
return a*b;
}
double div(double a, double b)
{
if (b != 0) {
return a / b;
} else {
printf("输入错误!\n");
return 0;
}
}
double mod(double a,double b)
{
return fmod(a,b);
}
int main(int argc, char const *argv[])
{
Calculator calc={add,sub,mul,div,mod};
double result;
int c;
int d;
printf("请输入俩个数:");
scanf("%d%d",&c,&d);
result = calc.add(c,d);
printf("和为:%.2lf\n",result);
result = calc.sub(c,d);
printf("差为:%.2lf\n",result);
result = calc.mul(c,d);
printf("积为:%.2lf\n",result);
result = calc.div(c,d);
printf("商为:%.2lf\n",result);
result = calc.mod(c,d);
printf("余为:%.2lf\n",result);
return 0;
}
字符串的拼接
#include <stdio.h>
int getLength(char *str)
{
int len;
for(len=0;str[len]!='\0';len++);
return len;
}
char *myStrcat(char *str1, char *str2)
{
int len=getLength(str1);
int i,j;
for ( i = len,j=0;str2[j]!='\0';i++,j++)
{
str1[i]=str2[j];
}
str1[i]='\0';
return str1;
}
int main(int argc, char const *argv[])
{
char s1[100]="abcd";
char s2[40]="eggh";
char *p=s1;
p=myStrcat(s1,s2);
printf("s1=%s\n",s1);
printf("s2=%s\n",s2);
printf("s1+s2=%s\n",p);
return 0;
}
这周分享就到这里,下周一起加油。