亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12
最近訪問板塊 發(fā)新帖
樓主: heefly
打印 上一主題 下一主題

char *a=* (char**) p1 什么意思。 [復制鏈接]

論壇徽章:
0
11 [報告]
發(fā)表于 2008-08-18 15:41 |只看該作者
原帖由 kimi.cai 于 2008-8-18 13:47 發(fā)表



是地址

對,是第一個元素的地址,但是不大知道這樣饒一圈有什么好處, 直接強制轉換為char*,程序不是更具有可讀性嗎?

論壇徽章:
0
12 [報告]
發(fā)表于 2008-08-18 21:18 |只看該作者
原帖由 heefly 于 2008-8-18 15:41 發(fā)表

對,是第一個元素的地址,但是不大知道這樣饒一圈有什么好處, 直接強制轉換為char*,程序不是更具有可讀性嗎?

void*比char*更有可讀性和通用性

論壇徽章:
0
13 [報告]
發(fā)表于 2008-08-18 22:34 |只看該作者
我在網(wǎng)上找了一下,這段代碼可能出現(xiàn)在以下代碼中
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>

#define MAXLINES 1024

static int scomp(const void *, const void *);

main(int argc, char *argv[])
{
   int i, n;
   char *strings[MAXLINES], buf[BUFSIZ];

   if (argc > 1)
      assert(freopen(argv[1],"r",stdin));

/* Read lines into dynamic memory */
for (n = 0; n < MAXLINES && fgets(buf,BUFSIZ,stdin); ++n)
   {
      strings[n]: malloc(strlen(buf)+1);
      assert(strings[n]);
      strcpy(strings[n],buf);
   }

   qsort(strings, n, sizeof strings[0], scomp);

/* Free memory */
for (i = 0; i < n; ++i)
   {
      fputs(strings
,stdout);
       free(strings
);
   }
   return 0;
}

static int scomp(const void *p1, const void *p2)
{
   char *a = * (char **) p1;
   char *b = * (char **) p2;
   return strcmp(a,b);
}


上面這段代碼用于排列不規(guī)則長度的字符串,摘自
http://www.freshsources.com/19940197.HTM

那么我再看了一下qsort函數(shù)的原型

void qsort(void *base,size_t nelem,size_t width,int (*Comp)(const void *,const void *));其中:

*base 為要排序的數(shù)組

nelem 為要排序的數(shù)組的長度

width 為數(shù)組元素的大。ㄒ蛔纸Y為單位)

(* Comp)(const void *p1,const void *p2) 為判斷大小函數(shù)的指針,這個函數(shù)需要自己定義,如果p1>p2,函數(shù)返回-1;a<b,函數(shù)返回1;a==b函數(shù)返回0。


那么scomp的用意就是對不同的類型中的字符串進行比較。如可能不是char,而是某個struct 中的char str[],所以void更有可讀性和通用性。

這個函數(shù)就是p1指向a,p2指向b
http://www.freshsources.com/199401A1.HTM

[ 本帖最后由 waternie 于 2008-8-18 22:36 編輯 ]

論壇徽章:
0
14 [報告]
發(fā)表于 2008-08-18 22:36 |只看該作者
原帖由 waternie 于 2008-8-18 22:34 發(fā)表
我在網(wǎng)上找了一下,這段代碼可能出現(xiàn)在以下代碼中
#include
#include
#include
#include

#define MAXLINES 1024

static int scomp(const void *, const void *);

main(int argc, char *argv[] ...


有更典型的
pthread_create

論壇徽章:
0
15 [報告]
發(fā)表于 2008-08-19 13:00 |只看該作者
原帖由 waternie 于 2008-8-18 22:34 發(fā)表
我在網(wǎng)上找了一下,這段代碼可能出現(xiàn)在以下代碼中
#include
#include
#include
#include

#define MAXLINES 1024

static int scomp(const void *, const void *);

main(int argc, char *argv[] ...

真是牛人,我看的就是這個例子。。】耥敚。。!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP