一、首先来看一个程序
#include <cstdio>
int main()
{
char *a[10]={"111","222"};
printf("%s\n%s\n%s\n",a,*a,a[0]);
printf("%d:\t%s\n",sizeof(a[0]),a[1]);
printf("\n\n");
char b[10][10]={"111","222"};
printf("%s\n%s\n%s\n",b,*b,b[0]);//效果一样,不要问我为什么,我也不知道。
printf("%d:\t%s\n",sizeof(b[1]),b[1]);
return 0;
}
/*
sizeof(a) 等于a所指向对象的长度
char *a[n]; a[i]为字符串首地址,a为第一个字符串首地址的地址,sizeof(a[0])=4;
char a[n][m]; a[i]为字符数组,a为第一个字符串首地址,sizeof(a[0])=m;
*/
二、两个排序程序
#include <cstdio>
#include <cstring>
#include <cstdlib>
int cmp(const void *a,const void *b)
{
char **pa=(char **)a;
char **pb=(char **)b;
return strcmp(*pa,*pb);
}
int main()
{
char *a[3]={"222","111","333"};
qsort(a,3,sizeof(a[0]),cmp);
printf("%s\n%s\n%s\n",a[0],a[1],a[2]);
return 0;
}
/*
这里的a是指针的指针,所以在cmp中要首先转换成(char**)形式,然后使用*pa和*pb转换成指针(即:字符串首地址),strcmp(*pa,*pb)对字符串进行排序即可
*/
//////////////////////////////////////////
#include <cstdio>
#include <cstring>
#include <cstdlib>
int cmp(const void *a,const void *b)
{
char *pa=(char *)a;
char *pb=(char *)b;
return strcmp(pa,pb);
}
int main()
{
char a[3][10]={"222","111","333"};
qsort(a,3,sizeof(a[0]),cmp);
printf("%s\n%s\n%s\n",a[0],a[1],a[2]);
return 0;
}
/*
这里的a直接就是地址,所以在cmp中只需要转换成(char*)形式,这时pa和pb直接就是字符串首地址,所以直接使用strcmp(pa,pb)即可
更好的理解:将a看做一维数组,数组里面元素为字符串
*/
参考网址:http://c.chinaitlab.com/c/skill/200907/790644.html
分享到:
相关推荐
使用`qsort`对整型数组排序,比较函数`cmp`通过将void指针转换为int指针并进行减法操作来确定元素的相对顺序。 2. **对char类型数组排序**: 类似于int类型的排序,只是将void指针转换为char指针,适用于字符数组...
通过对上述代码的分析,我们可以看到,利用结构体和`qsort`函数可以方便地实现对多维数组的排序。这种方法不仅适用于二维数组,还可以扩展到更高维度的数据结构。此外,通过改变比较函数中的逻辑,可以灵活地实现...
### 二、字符数组排序 对于字符数组,也可以采用类似的比较函数来进行排序: ```cpp #include int cmp(const void *a, const void *b) { return *(char *)a - *(char *)b; } int main() { char word[100]; //...
一、对 int 类型数组排序 qsort 函数可以对 int 类型数组进行排序,下面是一个简单的示例代码: ```c int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a – *(int *)b; } qsort(num, ...
然后,使用 qsort 函数对字符数组进行排序: ```c char word[100]; qsort(word, 100, sizeof(word[0]), cmp); ``` 三、对浮点数数组的排序 对浮点数数组的排序需要注意,浮点数的比较需要特殊处理。cmp 函数的定义...
// 对字符数组word进行排序 ``` ##### 3. 对double类型数组排序 浮点型数据排序需要注意数值的精度问题。 ```c double in[100] = { /* 初始化数组 */ }; int cmp(const void *a, const void *b) { return *...
对字符数组排序与整型数组类似,只是比较函数中的类型转换变为`char`类型: ```c char word[100]; int cmp( const void *a , const void *b ) { return *(char *)a - *(char *)b; } qsort(word, 100, sizeof...
一、对 int 类型数组排序 qsort 函数可以对 int 类型数组进行排序。例如,下面是一个对 int 类型数组的排序示例: ```c int num[100]; int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)...
类似于整型数组,字符数组的排序也可以通过`cmp`函数实现,这里需要注意的是比较的类型应与数组元素匹配,即`char`类型。 3. **对双精度浮点型(double)数组排序** 在处理浮点数时,由于可能存在浮点误差,`cmp`...
对int类型数组排序 `qsort()`函数可以用于对整型数组进行排序。在比较函数`cmp`中,通过类型转换将传入的`void*`指针转换为`int*`,然后比较两个指针指向的数值大小。具体实现如下: ```c int cmp(const void *a, ...
* 对字符数组排序 * 对双精度浮点数数组排序 * 对结构体数组排序 * 对字符串数组排序 * 在计算几何中求凸包 下面是 qsort 函数的一些实际应用示例: 1. 对整数数组排序 ```c int num[100]; int cmp(const void *a...
本篇将深入探讨Symbian中数组排序的相关知识点,以及如何在不同编码格式下实现排序。 首先,Symbian操作系统主要使用C++语言进行开发,因此我们讨论的数组排序主要基于C++的原生数组和STL(Standard Template ...
使用qsort函数来对结构体数组进行快速排序,提高效率和简化代码。 使用atoi函数来将字符串形式的生日转换为整数形式,便于比较和计算年龄。 使用结构体数组来存储通讯录的信息,方便进行排序和输出。 使用qsort函数...
2. 对字符数组排序 char word[100]; int cmp ( const void *a , const void *b ){ return *(char *)a - *(char *)b; } qsort(word,100,sizeof(word[0]),cmp); 3. 对浮点数数组排序 double in[100]; int cmp( ...
在Java编程中,数组排序是常见的操作,有多种算法可供选择。本文主要介绍四种常见的排序算法:冒泡排序、快速排序、希尔排序和选择排序。这些算法各有特点,适用于不同的场景。 1. **冒泡排序**: 冒泡排序是一种...
C++提供了多种方式进行字符转换,例如`std::cin.getline()`、`std::getline()`、`std::istringstream`和字符数组的`strcpy`、`strcat`等函数。理解这些函数的工作原理和使用场景至关重要,它们可以帮助我们有效地...
- `cmp`函数可以用来比较字符数组中的元素,通常用于排序字符串或字符数组。 ### 3. 排序浮点型数组 #### 示例代码: ```c #include int cmp(const void *a, const void *b) { return *(double *)a > *(double ...