码迷,mamicode.com
首页 > 编程语言 > 详细

字符串和字符数组的细节

时间:2015-11-26 00:59:47      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

字符数组的初始化与sizeof、strlen

     1、  sizeof是C语言的一个关键字,也是C语言的一个运算符(sizeof使用时是sizeof(类型或变量名),所以很多人误以为sizeof是函数,其实不是);sizeof运算符用来返回一个类型或者是变量所占用的内存字节数。为什么需要sizeof?主要原因一是int、double等原生类型占几个字节和平台有关;二是C语言中除了ADT外还有UDT,这些用户自定义类型占几个字节无法一眼看出,所以用sizeof运算符来让编译器帮忙计算。

     2、strlen是一个C语言的库函数,这个库函数的原型是:size_t_strlen(const char *s);这个函数接收一个字符串的指针,返回这个字符串的长度(以字节为单位)。注意一点是:strlen返回的字符串长度是不包含字符串结尾的‘\0‘的。我们为什么需要strlen库函数?因为从字符串的定义(指针指向头、固定结尾、中间依次相连)可以看出无法直接得到字符串的长度,需要strlen的来计算出字符串的长度。

#include<stdio.h>
#include<string.h>

int mystrlen(const char *p)
{
	int cnt = 0;
	while(*p != ‘\0‘)
	{
		cnt++;
		p++;
	}
	return cnt;
}
int main(void)
{
   char *p = "Linux";
   
   // int len = strlen(p); strlen()函数内部就是上面写的mystrlen()
   int len = mystrlen(p);
	
   printf("len = %d.\n",len);
   
   return 0;
}

  

 

     3、sizeof(数组名)得到的永远是数组的元素个数(也就是数组的大小),和数组中有无初始化,初始化多、少等是没有关系的。strlen是用来计算字符串的长度的,只能传递合法的字符串进去才有意义,如果随便传递一个字符指针,但是这个字符指针并不是字符串是没有意义

字符串和字符数组的细节

标签:

原文地址:http://www.cnblogs.com/yygsj/p/4996377.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!