指针、数组和地址间的关系:
数组的基地址是在内存中存储数组的起始位置,是数组中第一个元素(下标为0的地址),或者说数组名本身是一个地址。
在访问内存方面,指针和数组几乎是相同的。
①指针是以地址作为值得变量
②数组名的值是一个特殊的固定地址,可以把它看作是常量指针。
③p=a;等价于p=&a[0];
④p=a+1;等价于&a[1];
⑤*(a+i)等价于a[i]
两种排序方法:
冒泡排序
#include<Stdio.h> int main() { int i,j,n=6,m,a[10],k; n=6; printf("请输入:"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=1;i<n;i++){ for(j=0;j<n-1;j++){ if(a[j]>a[j+1]){ m=a[j]; a[j]=a[j+1]; a[j+1]=m; } printf("j=%d",j); for(k=0;k<n;k++) printf("%4d",a[k]); printf("\n"); } printf("第%d趟排序结果",i); for(k=0;k<n;k++) printf("%4d",a[k]); printf("\n"); } printf("排序后结果:"); for(i=0;i<n;i++) printf("%4d",a[i]); return 0; }
选择排序
#include<Stdio.h> void xz(int x[],int n); int main() { int *p,i,j,a[10],k,n,temp; printf("Enter n:"); scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); p=a; xz(p,n); printf("After sorted:"); for(i=0;i<n;i++){ printf("%5d",a[i]); } return 0; } void xz(int x[],int n) { int i,j,k,t; for(i=0;i<n;i++){ k=i; for(j=i+1;j<n;j++) if(x[j]<x[i]) k=j; if(k!=i){ t=x[k]; x[k]=x[i]; x[i]=t; } } }