C语言关键技术 - 标准库函数:sizeof strlen strcpy memcpy

sizeof strlen

sizeof函数:计算字符串占的总内存空间
char s[]=“abc\0de”;
printf(“%d”,sizeof(s));
7
strlen函数:获取字符串的长度。//遇到终结符‘\0’就会终止。

20
3

std::cout << "Sizeof\n";
char str[] = "Hello";
char* p = str;

printf("%d\n", sizeof(str));				//6
printf("%d\n", sizeof(p));				//4
printf("%d\n", sizeof(*p)); 				//1

sizeof ( p ) = 4; 因为 p为指针,32位系统 指针所占字节为 4个字节
sizeof ( *p ) = 1; 因为 *p 为 指针所指向的变量为char类型为 2个字节

int a[100];
sizeof (a) = 400; // 因为 a是类型为整型、有100个元素的数组,所占内存为400个字节
sizeof (a[100]) = 4; //因为 a[100] 为数组的第100元素的值该值为 int 类型,所占内存为4个字节。
sizeof (&a) = 4; //因为 &a 为数组的地址即指针,32位系统 指针所占字节为 4个字节
sizeof (&a[0]) = 4; //因为&a[0] 为数组的首元素的地址即指针,32位系统 指针所占字节为 4个字节

strcpy

char *strcpy(char *strDest, const char *strSrc);
{
assert((strDest != NULL) && (strSrc != NULL));
char *address = strDest;
while( (*strDest++ = * strSrc++) != ‘\0’ ) //直到strSrc指向\0. 验证: a[] =”abcd” b[] =”abc”
return address;
}
直接返回char *的手段,就是为了后来函数调用者方便而设计的,直接可以使用拷贝后的dest字符串了.如:
int length = strlen( strcpy( strDest, “hello world”) );

strcpy和memcpy

(1)复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。
(2)复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。
void *memcpy(void *memTo, const void *memFrom, size_t size)

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值