- 一、定义
- 二、数组初始化
- 1、大多情况下,数组在定义时必须确定大小
- 2、数组的定义在下面三种情况下不需要指明大小
- 3、不能直接给数组赋值字符串
- 三、数组简单应用
- 1、斐波那契数列
- 2、冒泡排序
- 3、选择排序
在内存中开辟连续空间,即
相同数据类型;地址空间连续。
#includeint main() { int num; int i; printf("需要录入的学生人数?n"); scanf("%d",&num); int array[num]; //int array[num]; for(i=0;i printf("请输入第%d个学生的成绩n",i+1); scanf("%d",&array[i]); } printf("这些学生的成绩是:"); for(i=0;i printf("%d ",array[i]); } return 0; }
这样程序的执行虽无问题,但却是一个不好的习惯。
C语言变量的定义最好要放在开头,否则有时候编译器会报错的,就是要先定义完变量,再做其他事。(是的,但这通常是发生在写32,51上,Keil的C51所采用的C标准是一个较早期的标准,在程序书写上有较多的限制。)
而在gcc编译器中变量的定义却可以放在程序任何位置。
想动态赋值,可以用指针
#include2、数组的定义在下面三种情况下不需要指明大小#include int main() { int num; int i; int *parray = NULL;//防止野指针 printf("需要录入的学生人数?n"); scanf("%d",&num); // 游标卡尺 开辟空间大小 parray = (int *)malloc(sizeof(int) * num);//开辟空间 字节为单位 malloc前相当于游标卡尺 memset(parray,0,sizeof(int) * num);//空间初始化 for(i=0;i printf("请输入第%d个学生的成绩n",i+1); scanf("%d",parray++); } printf("这些学生的成绩是:"); parray -= num;//指针回调,少了这个输出都是0 for(i=0;i printf("%d ",*parray++); } return 0; }
①数组是形式参数
②数组声明的同时进行了初始化
int a[] = {0,1,2,3};
③数组的存储类型为extern
3、不能直接给数组赋值字符串错误示范:
#includeint main() { char array[128] = {0}; array = "cpcp shuai"; printf("%sn",array); return 0; }
提示错误:对具有数组类型的表达式赋值
error: assignment to expression with array type
用strcpy函数
#include三、数组简单应用 1、斐波那契数列#include int main() { char array[128] = {0}; strcpy(array,"cpcc shuai"); printf("%sn",array); return 0; }
斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,
像这样的:1、1、2、3、5、8、13、21、34、55…
#include2、冒泡排序void main(){ int i,n; int f[128]={1,1}; printf("请输入斐波那契数列的通项:"); scanf("%d",&n); printf("%d,%d",f[0],f[1]); for(i=2;i f[i]=f[i-2]+f[i-1]; printf(",%d",f[i]); } }
#include3、选择排序#include int main() { int arry[8] = {312,2,4,6,3,65,64,13}; int len; int i; int j; int tmp; len = sizeof(arry)/sizeof(arry[0]); for(i=0;i for(j=0;j if(arry[j] tmp = arry[j]; arry[j] = arry[j+1]; arry[j+1] = tmp; } } } for(i=0;i printf("%d ",arry[i]); } return 0; }
#include#include int main() { int arry[8] = {312,2,4,6,3,65,64,13}; int len; int i; int j; int tmp; len = sizeof(arry)/sizeof(arry[0]); for(i=0;i for(j=i+1;j if(arry[i] tmp = arry[j]; arry[j] = arry[i]; arry[i] = tmp; } } } for(i=0;i printf("%d ",arry[i]); } return 0; }



