c语言题中的一些陷阱
2016-09-04 23:28
127 查看
一、求下列两个数组的长度关系
/* 求下列两个数组的长度关系 */ char acX[] = "abcdefg"; char acY[] ={ 'a', 'b','c', 'd', 'e', 'f', 'g' };
解析:对于字符串来说,字符串结尾默认为‘\0’,所以acX[]的长度为8,而第二个数组的大小长度为7,而且因为没有用‘\0’结尾,所以在屏幕上输出的值是不确定的.
二、求下列程序的输出结果
/* 求下列两个数组的长度关系 */ #include <stdio.h> void example(characHello[]) { printf("%d\n", sizeof(acHello)); return; } int main(void) { char acHello[] = "hello,bit"; example(acHello); system("pause"); return 0; }
解析:函数传参时有两种方式,一种是值传递,一种是址传递对于数组来说传递的是首元素的地址。Sizeof(类型)是求内存大小的函数,比如sizeof(int)=4,sizeof(char)=1;.
一个指针变量占有4个字节sizeof(*p)=4 (32位系统)。