#include<stdio.h>
#define GET_ARRAY_LEN(array,len){len=(sizeof(array)/sizeof(array[0]));}
int arr[]={4,5,1,4,6,41,5,47,15,8,4,58,4,5,84,56,58,4,95,4,8,46,4,8,6,49,4,6};
void quickSort(int left ,int right)
{
if(left>right) return ;
//-----------change
int i,j,temp,base =arr[left]; //left pointer is base num
i=left;
j=right; //i,j pointer
while (i!=j)
{
while (arr[j]>=base&&i<j) //j can't cross i
j--;
while (arr[i]<=base&&i<j)
i++;
if(i<j)
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
//move the base
arr[left]=arr[i];
arr[i]=base;
quickSort(left,i-1);
quickSort(i+1,right);
}
int main()
{
int len;
GET_ARRAY_LEN(arr,len)
// printf("%d\n",len);
quickSort(0,len);
for(int i=0;i<len;i++)
{
printf("%d ,",arr[i]);
}
}
//关于宏
#include <stdio.h>
#include <stdlib.h>
#define GET_ARRAY_LEN(array,len){len = (sizeof(array) / sizeof(array[0]));}
//定义一个带参数的 宏,将数组长度存储在变量len中
int main()
{
char a[] = {'1','2','3','4'};
int len;
GET_ARRAY_LEN(a,len)
//调用预定义的宏,取得数组a的长度,并将其存储在变量len中
printf("%d\n",len);
system("pause");
return 0;
}