读书人

sizeof()求传递参数大小的有关问题

发布时间: 2013-03-29 14:24:52 作者: rapoo

sizeof()求传递参数大小的问题
hi all:
公司代码要修改,只好自己写代码。但是发现一个问题,请教一下:
#include <stdio.h>
char str[32] = "abcdefghijklmnopqrstuvwxyz";

void fool(char *p)
{
printf("sizeof string %d\n",sizeof(*p));
}
main()
{
fool(str);
}

得到的结果是 1 而不是 32。这是为什么?网上差了一下叫做 弱拷贝,我想问问如过这个指针指向的字符串长度为 1.那么在fool函数中还可不可以进行strncpy(p,"123456",32)这样的操作。我试了一下好像没有segament fault。这是为什么?
我的编译器是gcc 环境就是ubuntu 12.04

谢谢
[解决办法]

引用:
p的类型是char *
*p的类型是char
所以
sizeof(*p) = sizeof(char)

++

读书人网 >C语言

热点推荐