3.8
4.(1)越界
(2)越界
5.数组是数据本身,而指针是数据的内存地址。
可以通过数组名和索引来访问数组中的元素。对于指针需要首先解引用才能访问它指向的内存中的数据。
数组的大小是固定的,一旦创建就不能更改。指针的大小可以是固定的或动态的,可以根据需要分配或释放内存空间。
数组的生命周期与它的元素相同,当数组超出作用域时,它所占用的内存空间也会被自动销毁。指针的生命周期取决于它指向的对象的生命周期,你需要手动管理指向的内存空间。
6.
普通的全局变量和static全局变量的生命周期都至本文件结束而释放。
普通的局部变量在函数每次被调用时都会重新分配内存空间,并且仅在本次函数调用中有效。而static局部变量在函数第一次被调用时分配内存空间,之后的函数调用中可以直接使用之前的内存空间,不会伴随程序的结束释放内存。
普通函数在程序的整个运行过程中都可以被调用。而static函数只能在定义该函数的C文件内部被调用,无法跨文件调用。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fun(int n)
{
if(n==1||n==2)//通过数列的规律发现,前两项都为1,作为递归的终止条件
{
return 1;
}
else
{
return fun(n-1)+fun(n-2);//要求第n项,就是求n-1项和n-2项的和
}
}
int main(int argc,const char *argv[] )
{
int i,n;
printf("请输入你要打印的斐波那契数列项数:\n");
scanf("%d",&n);//n为打印的项数
printf("斐波那契数列:");
for(i=1;i<=n;i++)
{
printf("%d ",fun(i));//fun函数返回的是第i项,所以用for循环打印每一项
}
return 0;
}