一个二级指针**p和二维数组arr
**p 和 arr 不等价
(*p)[N]和arr[][N]等价
指针数组
char *p[3]={"hello","world","apple"};
数组名是p,数组中存储了三个元素,每个元素都是指针。
p+1,p移动了4个字节。
code
/***********************************
***** 二维数组每行求和 ******
************************************/
void arr_test(int (*p)[N],int len_r){
if(NULL==p){
return -1;
}
int i,j;
int sum_r=0;
for(i=0;i<len_r;i++){
for(j=0;j<N;j++){
sum_r=sum_r+*(p[i]+j);
}
printf("%d\n",sum_r);
sum_r=0;
}
}
主程序
#define N 3
int main(void)
{
int arr[3][3]={3,2,1,3,2,1,3,2,1};
int len_r=sizeof(arr)/sizeof(arr[0]);
arr_test(arr,len_r);
return 0;
}
/************************************
*二维数组,字符串冒泡排序排序*
*************************************/
int sort_arr( char (*p)[5],int row){
char arr[N];
int i,j;
for(i=0;i<row;i++){
printf("%s ",p[i]);
}
printf("\n");
for(i=0;i<row;i++){
for(j=0;j<row-i-1;j++){
if(strcmp(p[j],p[j+1])==1){
strcpy(arr,p[j]);
strcpy(p[j],p[j+1]);
strcpy(p[j+1],arr);
}
}
}
for(i=0;i<row;i++){
printf("%s ",p[i]);
}
return 0;
}
主函数
int main(void)
{
char arr[4][5]={"efbc","acba","brt","dac"};
int row=sizeof(arr)/sizeof(arr[0]);
sort_arr(arr,row);
return 0;
}
网友评论