#include<stdio.h>
#include<stdlib.h>
void arraysort(int a[],int num)//===void arraysort(int *a,int num)
{
int temp =0;
int i =0,j=0;
int num2 = sizeof(a)/sizeof(a[0]);//num2=1
printf("num2:%d\n",num2);
for(i = 0;i< num -1;i++)
{
for(j = i+1;j<num-1;j++)
{
if(a[i]>a[j])
{
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
}
void print_array(int a[],int num)
{
int i =0;
for(i=0;i< num;i++)
{
printf("%d",a[i]);
}
}
int main()
{
int a[] = {5,8,6,2,10};
int i =0;
int num = sizeof(a)/sizeof(a[0]);//num=5
printf("num:%d\n",num);
//数组做函数参数的退化问题,数组做函数参数退化为一个指针
//把数组内存的首地址和数组的有效长度传递给被调用函数
//实参的a和形参a数据类型本质不一样,形参数组a编译器会把它当成指针处理
arraysort(a,num);
print_array(a,num);
system("pause");
return 0;
}
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a; //告诉编译器分配4个字节的内存
int b[10];//告诉编译器分配40个字节的内存
printf("b:%d,b+1:%d,&b:%d,&b+1:%d\n",b,b+1,&b,&b+1);
//结论:1 b+1和&b+1结果不一样==》b代表数组首元素的地址 ,&b代表整个数组的地址
// 2 b和&b结果一样 ==》数组首元素的地址和数组的地址一样
printf("%d\n",sizeof(a));//4
printf("%d\n",sizeof(b));//40
//结论:数据类型的本质:固定大小内存块的别名
system("pause");
return 0;
}