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', '