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

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3972 | 回復(fù): 17
打印 上一主題 下一主題

[函數(shù)] 調(diào)用main函數(shù),打印入?yún)rgv coredump! 各位幫忙看看 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2007-04-11 11:41 |只看該作者 |倒序瀏覽

  1. void testmain()
  2. {
  3.         char argv[10][40];
  4.         memset(argv,0,sizeof(argv));
  5.         strcpy(argv[0],"4444");
  6.         strcpy(argv[1],"5555");
  7.         sleep(3);       
  8.         printf("------\n");
  9.         main(2,argv);
  10.         return;
  11. }
  12. int main(int argc, char **argv)
  13. {       
  14.                 int i;
  15.                 printf("======%d  argv=%p\n",argc,argv);               
  16.                
  17.                 for(i=0;i<argc;i++)
  18.                 {
  19.                         printf("argv[%d]=%s\n",i,argv[i]);
  20.                 }
  21.                 testmain();
  22.                
  23.                 return(0);
  24. }
復(fù)制代碼

把for循環(huán)去掉是可以運行的,不知道是哪里的問題。

[ 本帖最后由 高峰 于 2007-4-11 11:43 編輯 ]

論壇徽章:
0
2 [報告]
發(fā)表于 2007-04-11 11:46 |只看該作者
不是無限遞歸嗎?

論壇徽章:
0
3 [報告]
發(fā)表于 2007-04-11 11:49 |只看該作者
原帖由 高峰 于 2007-4-11 11:41 發(fā)表

  1. void testmain()
  2. {...
  3.         main(2,argv);
  4. ...
復(fù)制代碼



太狠了吧???

論壇徽章:
0
4 [報告]
發(fā)表于 2007-04-11 11:51 |只看該作者
是遞歸啊,終止條件還沒有設(shè)置,再幫看看

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
5 [報告]
發(fā)表于 2007-04-11 12:02 |只看該作者
樓主把最基本的概念都沒搞清楚。

main 的參數(shù)是一個一維數(shù)組,它的每個元素是一個 char * 類型。
你傳遞給它的卻是一個一維數(shù)組,每個元素是一個 char 類型。不要爭辯說你傳的 argv 是個二維數(shù)組 —— 那沒用,你進(jìn)行函數(shù)調(diào)用時,所有的數(shù)組都被理解成一維數(shù)組,事實上 C 里面根本沒有二維數(shù)組這個概念。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
6 [報告]
發(fā)表于 2007-04-11 12:04 |只看該作者
簡而言之,就是
char *argv[]

char argv[][]
的區(qū)別。
前者 argv[0] 的類型是 char *,后者 argv[0] 的類型是 char []

論壇徽章:
0
7 [報告]
發(fā)表于 2007-04-11 12:10 |只看該作者
void testmain()
{
        char **argv;
        argv=(char **)malloc(...)
argv[0]=(char *)malloc...
argv[1]=(char *)malloc...

        strcpy(argv[0],"4444");
        strcpy(argv[1],"5555");
        sleep(3);      
        printf("------\n");
        main(2,argv);
        return;
}

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
8 [報告]
發(fā)表于 2007-04-11 12:11 |只看該作者
原帖由 connet 于 2007-4-11 12:10 發(fā)表
void testmain()
{
        char **argv;
        argv=(char **)malloc(...)
argv[0]=(char *)malloc...
argv[1]=(char *)malloc...

        strcpy(argv[0],"4444");
        strcpy(argv[1 ...

不用那么復(fù)雜,
只需要
  1. char *argv[2];
  2. argv[0] = "4444";
  3. argv[1] = "5555";
復(fù)制代碼

就可以了。

論壇徽章:
0
9 [報告]
發(fā)表于 2007-04-11 12:47 |只看該作者
多謝flw的指點,佩服佩服!
我的確忽略了這個問題。

論壇徽章:
0
10 [報告]
發(fā)表于 2007-04-11 14:06 |只看該作者
此帖有保留價值
char [][]和char **的故事
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP