| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1232 人关注过本帖
标题:sizeof在函数内部,不起作用了?~~
只看楼主 加入收藏
木瓜君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:144
注 册:2009-10-17
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
sizeof在函数内部,不起作用了?~~
程序代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void string_link(char str1[],char str2[])
{
    int i ,j = 0;
    if (sizeof(str1) < ( strlen(str1) + strlen(str2)) )
    {
        printf("str1sizes : %d\n",sizeof(str1));     //无论哪个字符串sizeof的结果都是4
        printf("str2sizes : %d\n",sizeof(str2));
        printf("str1len : %d\n",strlen(str1));
        printf("str2len : %d\n",strlen(str2));
        printf("has not enough size!\n");
        exit(1);
    }
    else
    {
        i = strlen(str1);
        while (str2[j])
        {
           str1[i++] = str2[j++];
        }
    }
}
void main()
{
    char str1[80] = "hello++++",str2[40] = " word!";
    printf("str1sizes : %d\n",sizeof(str1));         //这里能正确显示
    string_link(str1,str2);
    printf("%s\n",str1);
}

哪位有什么好的办法~~让它在函数内能计算准确的数组长度不?
搜索更多相关主题的帖子: 函数 sizeof 
2010-02-13 10:06
heartnheart
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:335
专家分:1096
注 册:2009-7-10
收藏
得分:10 
数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:
fun(char [8])fun(char [])都等价于 fun(char *) 在C里传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小如果想在函数内知道数组的大小, 需要这样做:进入函数后用memcpy拷贝出来,长度由另一个形参传进去
2010-02-13 18:11
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:10 
以下是引用heartnheart在2010-2-13 18:11:52的发言:

数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:
fun(char [8])fun(char [])都等价于 fun(char *) 在C里传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小如果想在函数内 ...



直接用vector
2010-02-13 18:42
木瓜君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:144
注 册:2009-10-17
收藏
得分:0 
容器?
2010-02-13 19:24
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
yeh, vector can handle everything that buffer does.
2010-02-13 22:02
木瓜君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:144
注 册:2009-10-17
收藏
得分:0 
鸡肠~容器不是C++的吗?
2010-02-14 00:16
lwei
Rank: 5Rank: 5
等 级:职业侠客
威 望:3
帖 子:197
专家分:369
注 册:2005-5-4
收藏
得分:0 
二楼正解。

2010-02-15 15:13
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
收藏
得分:0 
数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,如:
fun(char [8])fun(char [])都等价于 fun(char *) 在C里传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小如果想在函数内知道数组的大小, 需要这样做:进入函数后用memcpy拷贝出来,长度由另一个形参传进去


二楼正解。


我其实想说的是,

正解个p


正确的策略是用另加一个参数,把size传进去。
2010-02-15 17:55
hpdell
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-4-2
收藏
得分:0 
好!!!!!!!!!!!!!!!
2010-06-17 13:45
快速回复:sizeof在函数内部,不起作用了?~~
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034870 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved