导航

strlen

昨晚调试的时候出现了一个问题,分配大小为72B的字符数组,strlen的结果为78

 

那么问题就在strlen这里,它是以'\0'结尾的

 

因为这边实际传送的都不是字符串,而是数据,我是没有加'/0'传输的,也不会

 

但是用sizeof是有条件的

void test(char p[], char *p2)
{
        printf("size %ld\n", sizeof(p));
        printf("size %ld\n", sizeof(p2));
}
int main()
{
        char p[10];

        printf("size %ld\n", sizeof(p));

        test(p, p);
        return 0;
}

输出为

size 10
size 8
size 8

8是64位机器的缘故。

 

因为作所以不加'\0',多传一个参数表示大小

posted on 2021-05-11 08:42  toughcactus  阅读(234)  评论(0编辑  收藏  举报