标签:
字符数组的初始化与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