您的位置:首页 > 编程语言 > C语言/C++

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位系统)。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 陷阱