传智播客 C/C++学习笔记 二级指针作为输入 2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//int print_array(char** array, int num)
int print_array(char array[5][6], int num)
//int print_array(char[6]* array, int num)
//int print_array(char array[][6], int num) //int print_array(char (*array)[6], int num)
{
int i = 0;
for (i = 0; i < num; i++) {
//printf("%s\n", array[i]); //my_array[0]; my_array[0]--->"aaa" printf(%s, myArray[0]);
printf("%s\n", *(array + i));
/// ===>array 应该是一个指向 char[6]的指针 指针的步长不一样
///指针所指向内存空间的数据类型不一样
}
return 0;
}
int sort_array(char array[][6], int num)
{
char buf[6] = { 0 };
int i = 0;
int j = 0;
//交换的是内存块
for (i = 0; i < num; i++) {
for (j = i; j < num; j++) {
if (strcmp(array[i], array[j]) > 0) {
strcpy(buf, array[i]);
strcpy(array[i], array[j]);
strcpy(array[j], buf);
}
}
}
return 0;
}
int main(void)
{
char my_array[5][6] = { "aaa", "ccc", "bbb", "111" };
int num = 0;
int i = 0;
{
int len1 = sizeof(my_array);
printf("%d\n", len1);
int len2 = sizeof(my_array[0]);
printf("%d\n", len2);
/// my_array +1 向后跳6个单元 跳一行
printf("--------------------\n");
for (size_t i = 0; i < 4; i++)
{
printf("%s\n", *(my_array + i));
}
}
printf("--------------------\n");
for (i = 0; i < 5; i++) {
if (strlen(my_array[i]) != 0) {
num++;
}
}
printf("num : %d\n", num);
for (size_t i = 0; i < num; i++)
{
printf("%s\n", my_array[i]);
}
printf("---------------------------\n");
printf("排序之前\n");
print_array(my_array, num);
sort_array(my_array, num);
printf("排序之后\n");
print_array(my_array, num);
return 0;
}