一、数组的基本知识
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', '