C语言语法
1.判断
if语句:if(a=0)——先执行a=0;然后判断 if(a)。
以后编程写成 if(0==a)
2.循环结构
for():
while():
函数 :函数名+函数主体
void fun (int a,int b)
递归算法:使用递归算法需要有一个,明确的停止值让递归停止
#include<stdio.h>
int sub (int a)
{
int sum;
if(a==1)//停止值
{
return 1;
}
else
{
return sum=a*sub(a-1);
}
return sum;
}
int main()
{
int sub();
int a,b;
scanf("%d",&a);
b=sub(a);
printf("result=%d\n",b);
}
函数的参数传递
参数传递的本质是数值的传递,并不会对变量本身有任何影响。是实参将值传递给形参 ,实现调用函数的功能。
如果想通过调用函数,实现对实参值的修改,需要通过指针来修改地址。
1 #include<stdio.h>
2 int main()
3 {
4 int ex();
5 int a=5;
6 int b=6;
7 ex(&a,&b);
8 printf("%d,%d",a,b);
9 return 0;
10
11 }
12
13 int ex(int* a,int* b)
14 {
15 int c;
16 c=*a;
17 *a=*b;
18 *b=c;
19 }
指针:
本质是变量,但是存储的数据是地址,通过这个地址能找到我们想要的数据
常量指针:
指针指向的是一个常量 const +数据类型* +指针名(地址可修改,值不行)伪常量
不可通过修改指针的方式,对值进行修改。
In function ‘main’:
error: assignment of read-only location ‘*ptr’
*ptr=b;
指针常量:
指针是一个常量,指向不可被修改。 数据类型* + const +指针名(地址不可修改,值可以)
指针ptr不能修改,不能将其他变量的地址赋给指针常量
In function ‘main’:
error: assignment of read-only variable ‘ptr’
ptr=&b;
二级指针:*(ptr1)——(&a)——a
1 #include<stdio.h>
2 int main()
3 {
4 int a=10;
5 int* ptr=&a;
6 int** ptr1=&ptr;
7 printf("%d\n",*(*ptr1));
8 return 0;
9 }
输出结果:10
经典题目:猴子第一天摘了若干个桃子,当即吃了一半,还不解馋,又多吃了一个;第二天,吃剩下的桃子的一半,还不过瘾,又多吃了一个;以后每天都吃前一天剩下的一半多一个,到第10天想再吃时,只剩下一个桃子了。问第一天共摘了多少个桃子?
#include "stdio.h"
int sumPeach(int day)
{
if (day == 10)
return 1;
else
return 2 * (sumPeach(day + 1) + );
}
int main()
{
int sum;
sum=sumPeach(1);
printf("The first day of picking peaches number is:%d\n",sum);
}
结果
The first day of picking peaches number is:1534