使用递归实现斐波那契数列
1 1 2 3 5 8.....
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int n)
{
if(n==0||n==1)
return 1;
else
return fun(n-1)+fun(n-2);
}
int main(int argc, const char *argv[])
{
int n;
printf("please enter n:");
scanf("%d",&n);
int arr[n];
for(int i=0;i<n;i++)
{
*(arr+i)=fun(i);
}
for(int i=0;i<n;i++)
{
printf("%d ",*(arr+i));
}
return 0;
}
ubuntu@ubuntu:~/wei/7.16/t1$ gcc 07.c
ubuntu@ubuntu:~/wei/7.16/t1$ ./a.out
please enter n:10
1 1 2 3 5 8 13 21 34 55
8
void test1()
{
char str0[10];
char* str1 = "0123456789";
strcpy(str0,str1);//把str1指向的字符串赋值给str0,str1的字符串大小为11,str0大小为10,会数据溢出
}
void test3(char* str1)
{
char str0[10];
if(strlen(str1)<=10)//str1字符串的长度为10的时候,加上结束符\0,大小为11,会数据溢出
{
strcpy(str0,str1)
}
}
数组:数组在声明时需要指定大小,并且一旦声明,其大小就不能改变。数组名是一个常量指针,指向数组的第一个元素的地址。数组可以通过索引来访问其元素,例如 arr[0]
指针:指针是一个变量,它存储另一个变量的内存地址。指针的大小是固定的,与它指向的数据类型无关。指针可以被重新赋值为任何其他变量的地址。可以通过指针来访问和修改它所指向的变量的值,使用解引用操作 *p.
static修饰的局部变量,会延长生命周期,延长至本文件有效,不是作用域
普通的局部变量,申请的内存会随着作用域的结束被释放
static修饰的全局变量,其他文件不可以跨文件访问该变量;
static修饰的函数,生命周期至本文件有效,且只能在本文件调用,不可以跨文件调用;普通函数可以跨文件调用