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号
广州京杭网络科技有限公司 版权所有