转载
说明:所有题目均摘录于网络以及我所见过的面试题目,欢迎补充!
无特殊说明情况下,下面所有题s目都是linux下的32位C程序。
先来几个简单的热热身。
1、计算以下sizeof的值。
char str1[] = {'a', 'b', 'c', 'd', 'e'}; char str2[] = "abcde";
char *ptr = "abcde";
char book[][80]={"计算机应用基础","C语言","C++程序设计","数据结构"};
sizeof(str1)=?
sizeof(str2)=?
sizeof(ptr)=?
sizeof(book)=?
sizeof(book[0])=?
分析:
sizeof(str1)=5,就是5*sizeof(char)=5;
sizeof(str2)=6,字符串都是以' '结尾,所以所占字节数为6;
sizeof(ptr)=4,ptr是一个指针,在32位平台上大小为4字节;
sizeof(book)=320,book是一个二维数组,4*80*1
sizeof(book[0])=80,book[0]是第一维数组,因为此80*1
根据sizeof求数组元素的个数也很简单,拿第一个来说,就是sizeof(str1)/sizeof(char)。
2、上面是求计算他们所占字节数,下面来看看怎么求字符串或数组的实际长度。计算下面strlen值。
char arryA[] = {'a','b','c',' ','d','e'};
char arryB[] = {'a','b','c','d','e'};
char arryC[6] = {'a','b','c','d','e'};
char *str = "abcde";
分析:
strlen(arryA) = 3,strlen遇到' '就会返回,无论后面有多少个字符;
strlen(arryB)长度无法确定,没有人为写入‘