数组
2016-02-16 21:47
155 查看
数组:
是用来存储一组数据的容器.
[/code]
特点:
1.数组必须要定义长度(正整数),定义时可初始化(长度必须是常量)或之后单独初始化.
2.数组是有序的,每个数组都有角标,从0开始分配,角标不能>=数组长度.类型一致.
3.数组有地址(数组名),里面的元素也有地址.数组当参数时(长度可省)传递的是地址.
[/code]
4.数组当参数传递时是指针类型,所以如果需要用数组长度要额外传递.
数组第一个元素的地址就是这个数组的地址.二者是一致的.
[/code]
二维数组:
管理一组有关联的数组
特点:
1.与数组基本一致,但传递子数组时传递的是地址
[/code]
2.子数组数量控制行数,单个子数组长度控制列数
[/code]
3.每个子数组类型及长度一致
选择排序:
[/code]
冒泡排序
[/code]
是用来存储一组数据的容器.
//初始化方式
#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]
相关文章推荐
- 重温 Win32 API ----- 截屏指定窗体并打印
- Codeforces 622B The Time 【水题】
- 20160129.CCPP体系详解(0008天)
- 20160129.CCPP体系详解(0008天)
- (java) Search a 2D Matrix
- 2 Types of Linux File Locking (Advisory, Mandatory Lock Examples)
- C语言函数
- 华为机试题:字符转换Univesity
- Java基础05 实施接口
- 解密伪科学-碧波庭
- linux常用命令
- RXJava学习笔记(2)
- 20160127.CCPP体系详解(0006天)
- 20160128.CCPP体系详解(0007天)
- 20160127.CCPP体系详解(0006天)
- 20160128.CCPP体系详解(0007天)
- C语言的流程控制
- [Android Pro] Gradle Tips#1-tasks
- Java基础04 封装与接口
- 20160126.CCPP体系详解(0005天)