[c/c++] programming之路(14)、数组+冒泡和选择排序 一、数组的基本知识 二、const和define的区别(const代码不可更改,可在内存里更改;define放在常量区,无论如何无法修改) 三、数组初始化 四、数组操作说明

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void main0(){
 5     int a[5]={1,2,3,4,5};//数组在内存里是连续排列的
 6     int i;//VS2012版本,变量的声明要放在最前面(所以建议大家使用VS2013及之后的版本)
 7     printf("%d
",sizeof(a));//求内存占多少
 8     printf("%d
",sizeof(a)/sizeof(int));//求数组有多少个元素
 9     printf("%x
",a);
10     
11     for (i = 0; i < 5; i++)//java语言中的a.length在这儿行不通,只能sizeof(a)/sizeof(int)
12     {
13         printf("a[%d]=%d  &a[%d]=%x
",i,a[i],i,&a[i]);
14     }
15 
16     system("pause");
17 }
18 
19 void main1(){
20     int i;
21     int a[10];//数组越界不报错
22     //因为数组外部的内存空间,不确定是否有权限,
23     //如果越界访问,程序会崩溃
24     for (i = 0; i < 1600; i++)
25     {
26         a[i]=i+1;
27     }
28     getchar();
29 }

二、const和define的区别(const代码不可更改,可在内存里更改;define放在常量区,无论如何无法修改)

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #define  N 20
 4 
 5 void main(){
 6     int a[N]; //只有define可以
 7     //printf("%d", &N);     报错,编译器放在常量区,没有地址,无从修改
 8 
 9     const int num = 10;     //可变的常量,可以强制去掉常量的属性
10     //num = 12;        const限定代码不能修改,在内存有实体,是可以变的数
11     printf("%x", &num);
12     //int b[num];//这样不可以
13 
14     system("pause");
15 }

三、数组初始化

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void main(){
 5     //int num[10]={1,2,3,4,5,6,7,8,9,10};
 6     //int num[10]={1,2,3,4,5,6,7,8};//不足部分,填充为0
 7     //double num[10]={1,2,3,4};
 8     //数组元素大小已经确定,下标可以省略
 9     //double  num[] = { 1, 2 };
10     //double  num[] = {};//无法指定数组的大小,无法分配内存
11     double num[10] = { 0 };
12     printf("%x",&num);
13     getchar();
14 }

四、数组操作说明

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 
 4 void main4(){
 5     int a[3]={1,2,3};
 6     int b[3];
 7     int i;
 8     //b=a;    数组不能进行赋值,数组名是一个地址常量
 9     printf("%x
", a);
10     for (i = 0; i < 3; i++)
11     {
12         scanf("%d", &a[i]);
13         printf("%d
", a[i]);
14     }
15     system("pause");
16 }
17 
18 void main5(){
19     char str[5] = { '1', 'a', '3', 'm', '