您的位置:首页 > 其它

数组

2016-02-16 21:47 155 查看
数组:

是用来存储一组数据的容器.

//初始化方式

#include<stdio.h>

int main(){

//初始化:类型  数组名[长度]:{元素1,元素2,...};

int arr[3]={70,80,90};

//初始化二:单独初始化

int arr2[3];

arr2[0]=1;

arr2[1]=2;

arr2[2]=3;

//初始化3:省略长度

int arr3[]={70,80,90};

return 0;

}

[/code]

特点:

1.数组必须要定义长度(正整数),定义时可初始化(长度必须是常量)或之后单独初始化.

2.数组是有序的,每个数组都有角标,从0开始分配,角标不能>=数组长度.类型一致.

3.数组有地址(数组名),里面的元素也有地址.数组当参数时(长度可省)传递的是地址.

#include<stdio.h>

int arrMy(int arr[]){

return sizeof(arr);

}

int main(){

int arr[]={1,2,3};

int num=arrMy(arr);

printf("%d---%lu\n",num,sizeof(arr));//运行结果是:8---12


return 0;

}

[/code]

4.数组当参数传递时是指针类型,所以如果需要用数组长度要额外传递.

数组第一个元素的地址就是这个数组的地址.二者是一致的.

#include<stdio.h>

int arrMy(int arr[]){

arr[0]=10;

return sizeof(arr);

}

int main(){

int arr[]={1,2,3};

printf("%d\n",arr[0]);//运行结果:1

int num=arrMy(arr);

printf("%d\n",arr[0]);//运行结果是:10

return 0;

}

[/code]

二维数组:

管理一组有关联的数组

特点:

1.与数组基本一致,但传递子数组时传递的是地址

#include<stdio.h>

int main(){

int arr[2][3]={{1,2,3},{1,2,3}};

printf("%d\n",arr[0][1]); //运行结果:2

printf("%p\n",arr[1]);//运行结果:0x7fff5fbff7ec

return 0;

}

[/code]

2.子数组数量控制行数,单个子数组长度控制列数

#include<stdio.h>

int main(){

int arr[2][3]={{1,2,3},{1,2,3}};

//遍历数组

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

for (int j=0; j<3; j++) {

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

}

printf("\n");

}

return 0;

}

[/code]

3.每个子数组类型及长度一致

选择排序:

//选择排序

#include<stdio.h>

int main(){

int arr[6]={1,2,4,3,8,5};

int tempIndexMax=0;

for (int i=0; i<6-1; i++) {

 tempIndexMax=i;

for (int j=i+1; j<6; j++) {

   

if (arr[tempIndexMax]<arr[j]) {

tempIndexMax=j;

}

}

printf("%d\n",tempIndexMax);

int temp=arr[i];

arr[i]=arr[tempIndexMax];

arr[tempIndexMax]=temp;

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

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

}

printf("\n");

}

return 0;

}

/*运行结果

4

8	2	4	3	1	5

5

8	5	4	3	1	2

2

8	5	4	3	1	2

3

8	5	4	3	1	2

5

8	5	4	3	2	1

Program ended with exit code: 0

*/

[/code]

冒泡排序

#import <Foundation/Foundation.h>


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

@autoreleasepool {

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

int n=(sizeof(a))/(sizeof(int));

int t=0;

for (int i=0; i<n-1; i++) {

for (int j=0; j<n-1-i; j++) {

if (a[j]<a[j+1]) {

t=a[j];

a[j]=a[j+1];

a[j+1]=t;

}

}

}

for (int k=0; k<n; k++) {

printf("%d\t",a[k]);

}

}

return 0;

}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: