int (* arrPtr)[10] = NULL; // 一个指针,它指向一个有10个int元素的数组
int matrix[3][10]; // 3行,10列的数组
// 数组名称是一个指向第一个元素的指针,也就是第一行的指针
arrPtr = matrix; // 使得arrPtr指向矩阵的第一行
(*arrPtr)[0] = 5; // 将5赋值给第一行的第一个元素
arrPtr[2][9] = 6; // 将6赋值给最后一行的最后一个元素
++arrPtr; // 将指针移动到下一行
(*arrPtr)[0] = 7; // 将7赋值给第二行的第一个元素
arrPtr = a; // 错误:指针类型不匹配
int (*) [10]: arrPtr = (int (*)[10])a; // 合法
typedef int ARRAY_t[10]; // 定义一个“具有10个元素数组”类型名称
ARRAY_t a, // 具有该类型的数组
*arrPtr; // 一个指向该数组类型的指针
arrPtr = (ARRAY_t *)a; // 使得arrPtr指向a
#define ARRAY_LEN 100
#define STRLEN_MAX 256
char myStrings[ARRAY_LEN][STRLEN_MAX] =
{ // 墨菲定律的几条推论:
“会出错的事,总会出错。”
“世上没有绝对正确的事情。”
“每个解决办法都会衍生出新的问题。”
};
#define ARRAY_LEN 100
char *myStrPtr[ARRAY_LEN] = // char指针的数组
{ // 墨菲定律的几条推论:
“会出错的事,总会出错。”
“世上没有绝对正确的事情。”
“每个解决办法都会衍生出新的问题。”
};
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *getLine(void); // 读取文本中的一行
int str_compare(const void *, const void *);
#define NLINES_MAX 1000 // 定义文本行数的最大值
char *linePtr[NLINES_MAX]; // char指针的数组
int main()
{
// 读入行
int n = 0; // 读入行的数量
for ( ; n < NLINES_MAX && (linePtr[n] = getLine()) != NULL; ++n )
;
if ( !feof(stdin) ) // 处理错误
{
if ( n == NLINES_MAX )
fputs( "sorttext: too many lines.\n", stderr );
else
fputs( "sorttext: error reading from stdin.\n", stderr );
}
else // 排序和输出
{
qsort( linePtr, n, sizeof(char*), str_compare ); // 排序
for ( char **p = linePtr; p < linePtr+n; ++p ) // 输出
puts(*p);
}
return 0;
}
// 从stdin中的文本读取一行;忽略尾部的换行符
// 返回值: 一个指向所读字符串的指针,或者为NULL,当读到文字结尾时或发生错误时
#define LEN_MAX 512 // 定义一行字符数的最大值
char *getLine()
{
char buffer[LEN_MAX], *linePtr = NULL;
if ( fgets( buffer, LEN_MAX, stdin ) != NULL )
{
size_t len = strlen( buffer );
if ( buffer[len-1] == '\n' ) // 去掉尾部的换行符
buffer[len-1] = '\0';
else
++len;
if ( (linePtr = malloc( len )) != NULL ) // 为行获得内存空间
strcpy( linePtr, buffer ); // 将行复制到已分配区域
}
return linePtr;
}
// 比较函数,供qsort()使用
// 参数:两个指针,指向数组内待排序的两个元素,这里,两个指针都是char **类型
int str_compare( const void *p1, const void *p2 )
{
return strcmp( *(char **)p1, *(char **)p2 );
}
版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有