黑马程序员——一维数组

------  Java培训、Android培训、iOS培训、.Net培训期待与您交流! ------

    http://www.itheima.com

一维数组:属于构造类型,是具有一定顺序关系的若干相同类型变量的集合。

注意点:

  • 定义格式:类型说明符 数组名 [数组长度]
  • 数组的长度是可以是一个常量 也可以是常量表达式。
  • 数组名的命名规则:严格按照标识符的命名规范。
  • 数组名不能和其他变量同名。
  • 数组的长度可以使用 宏定义,int a6[N];其中N是一个宏定义。
  • 定义数组的时候,还可以定义普通变量,例如 int x,a[4];。
  • 编译时连续分配内存,数组的总字节=数组长度x元素字节;数组的长度=数组的总字节 /元素字节。
  • 数组名表示内存首地址,是地址常量。
  • 数组元素表示形式: 数组名[下标],其中下标可以是常量或常量表达式。
  • 数组初始化:1、定义的同时进行初始化:(1)定义的同时完全初始化,例如int a[3]={1,2,3};(2)定义的同时进行部分初始化,例如int a1[3]={1,23}以及int a2[10]={[2]=34,[5]=30};其中没有被初始化的元素系统自动赋值为0。2、先定义数组,然后通过下标法进行初始化,例如int a[3];  a[0] = 67;        a[1] = 34;a[2] = 12;这种先定义后初始化的情况下,如果部分数组元素被初始化了,剩下的元素不会被自动初始化为0。
  • 只能逐个引用数组元素,不能一次引用整个数组,例如int a[5];printf(“%d”,a);错误。
  • 数组的遍历:逐个访问数组的元素,利用for循环。例如下面程序通过for循环初始化数组然后逆序输出数组。

#include <stdio.h>

int main(int argc, const char * argv[])

{ int i,a[11];

for(i=0;i<=10;i++)

a[i]=i;

for(i=10;i>=0;i--)

printf(“%d”,a[i]);

return 0;

}

  • 注意数组的越界问题,例如

#include <stdio.h>

int main(int argc, const char * argv[]) {

char a[2];

a[0]='a';

a[1]='b';

a[2]='c';

printf("%c",a[2]);

return 0;

}系统不会报错,但是这个空间不属于该字符数组,所以是不安全的。

  • 数组元素作为函数的参数:用数组名作为函数实参,传递的是地址;形参数组的类型、长度要和实参数组的类型、长度一致,形参数组的长度可以不写;不管什么类型的数据,数据的内存地址在内存中占用8个字节。如以下程序:

#include <stdio.h>

//形参数组的类型、长度和实参数组的类型、长度一致,其中数组长度可以不写

 void test(int arr[],int len1){

    //数组名作为函数参数,传递的是地址,计算地址的字节数

     int len2=sizeof(arr);

    //数据的内存地址在内存中占用8个字节

     printf("%d\n",len2);//输出结果为8

     //遍历数组

     for (int i=0; i<len1; i++) {

         printf("%d\t",arr[i]);

     }

     printf("\n");

}

int main(int argc,constchar * argv[]) {

   //定义同时初始化数组

    int a[5]={1,2,3,4,5};

    //调用函数

    test(a, 5);

    return 0;

}

  • 冒泡排序思想:(1)比较第一个数与第二个数,若a[0]>a[1],则交换,然后比较第二个数与第三个数;依次类推,直至第n-1个数和第n个数比较为止,经过第一趟排序最大的数被安置在最后一个元素位置上;(2)对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置;(3)重复上述过程,共经过n-1趟冒泡排序后,排序结束,注意内外层循环次数的控制。
  • 选择排序思想:首先通过n-1次比较,从n个数中找出最小的, 将它与第一个数交换,经过第一趟选择排序,结果最小的数被安置在第一个元素位置上;再通过n-2次比较,从剩余的n-1个数中找出次小的数,将它与第二个数交换,经过第二趟选择排序,结果次小的数被安置在第二个元素位置上;重复上述过程,共经过n-1趟排序后,排序结束。注意内外层循环次数的控制。




基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值