c语言题中的一些陷阱

1、求下列两个数组的长度关系

characX[] = "abcdefg";

char acY[] ={ ‘a‘, ‘b‘,‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘ };

解析:对于字符串来说,字符串结尾默认为‘\0’,所以acX[]的长度为8,而第二个数组的大小长度为7,而且因为没有用‘\0’结尾,所以在屏幕上输出的值是不确定的.

2、求下列程序的输出结果

void example(characHello[])

{

printf("%d\n", sizeof(acHello));

return;

}

int main()

{

characHello[] = "hello,bit";

example(acHello);

system("pause");

return0;

}

解析:函数传参时有两种方式,一种是值传递,一种是址传递对于数组来说传递的是首元素的

地址。Sizeof(类型)是求内存大小的函数,比如sizeof(int)=4,sizeof(char)=1;.

一个指针变量占有4个字节sizeof(*p)=4。

3、以下叙述不正确的是(D)

A)、在不同的函数中可以使用相同变量的名字

B)、函数中的形式参数是在栈中保存

C)、在一个函数内定义的变量只在本函数范围内有效

D)、在一个复合语句中定义的变量在本函数范围内有效(复合语句指的是函数中的成对括弧构成的代码)

4、设有如下定义

unsignedlongpulArray[] = { 6, 7, 8, 9, 10 };

unsignedlong*pulPtr;

pulPtr =pulArray;

*(pulPtr +3) += 3;

printf("%d,%d\n", *pulPtr, *(pulPtr + 3));

求程序输出的结果

5、求输出结果

void example()

{

inti;

characNew[20];

for(i = 0; i < 5; i++)

{

acNew[i]= ‘0‘;

}

printf("%d\n", strlen(acNew));

return;

}

int main()

{

example();

system("pause");

return0;

}

6、全局变量只能在一个被.C包含的头文件中

解析:会发生变量重定义。

当一个程序要引入一个文件时  <> 表示只在当前库中寻找,找不到就会出错。

“” 表示先在当前库中寻找,找不到再在系统目录中找。

“”比<>的范围要大。

7、有以下程序求输出结果

int main()

{

union

{

shortk;

chari[2];

}*s,a;

s =&a;

s->i[0]= 0x39;

s->i[1]= 0x38;

printf("%x\n", a.k);

system("pause");

return0;

}

8、设有以下宏定义

#defineN4

#defineY(n)((N+2)*n)

求z = 2 * (N+ Y(5 + 1))的结果

9、int main()

{

unsignedchar a = 200;

unsignedchar b = 100;

unsignedchar c = 0;

c = a +b;

printf("%d  %d\n", a + b, c);

system("pause");

return 0;

}

求程序的执行结果()300  44

10、求输出结果

int main()

{

char c;

unsignedchar uc;

unsignedshort us;

c = 128;

uc = 128;

us = c +uc;

printf("0x%x", us);

us =(unsigned char)c + uc;

printf("0x%x", us);

us = c +(char)uc;

printf("0x%x\n",us);

system("pause");

return 0;

}

12、unsignedshort*sum(unsignedchara,unsignedcharb)

{

unsignedshorts = 0;

s = a+ b;

return&s;

}

int main()

{

unsignedshort*p = NULL;

unsignedchara = 1, b = 2;

p = sum(a,b);

printf("%u+%u", a, b);

printf("=%u\n", *p);

system("pause");

return0;

}

求程序执行结果()

时间: 2024-10-21 21:39:57

c语言题中的一些陷阱的相关文章

嵌入式 Linux C语言(九)——C语言的安全问题和指针陷阱

嵌入式 Linux C语言(九)--C语言的安全问题和指针陷阱 C语言是灵活度和自由度较大的编程语言,作为C语言核心的指针更是让C语言程序员可以越过安全的栅栏,对某些内存区域进行破坏性访问,引发安全风险.很多安全问题都能追根溯源到指针的误用.本文将从指针的角度解读C语言常见的安全问题和指针陷阱. 一.指针的声明和初始化 1.不恰当的指针声明 int* ptr1, ptr2;//声明ptr1为int指针,ptr2为整型 int *ptr1, *ptr2;//ptr1,ptr2都声明为指针 #def

JavaScript中的this陷阱的最全收集--没有之一

原文:JavaScript中的this陷阱的最全收集--没有之一 当有人问起你JavaScript有什么特点的时候,你可能立马就想到了单线程.事件驱动.面向对象等一堆词语,但是如果真的让你解释一下这些概念,可能真解释不清楚.有句话这么说:如果你不能向一个6岁小孩解释清楚一个东西,那么你自己也不懂这个东西.这句话或许有点夸张,但是极其有道理.个人觉得,如果需要掌握一门语言,掌握它的API只是学了皮毛,理解这门语言的精髓才是重点.提及JavaScript的精髓,this.闭包.作用域链.函数是当之无

有趣的C语言题

1 #include <stdio.h> 2 int main(void) 3 { 4 char buff[10]; 5 memset(buff,0,sizeof(buff)); 6 gets(buff); 7 printf("\n The buffer entered is [%s]\n",buff); 8 return 0; 9 } 这是一道有趣的C语言题,代码运行看似没错,却隐含着安全问题,问题在于gets()函数,这个函数是接收标准输入的一串字符串,并且没有检查字符

JavaScript中的this陷阱的最全收集

当有人问起你JavaScript有什么特点的时候,你可能立马就想到了单线程.事件驱动.面向对象等一堆词语,但是如果真的让你解释一下这些概念,可能真解释不清楚.有句话这么说:如果你不能向一个6岁小孩解释清楚一个东西,那么你自己也不懂这个东西.这句话或许有点夸张,但是极其有道理.个人觉得,如果需要掌握一门语言,掌握它的API只是学了皮毛,理解这门语言的精髓才是重点.提及JavaScript的精髓,this.闭包.作用域链.函数是当之无愧的.这门语言正式因为这几个东西而变得魅力无穷. 博客的标题是<J

转:JavaScript中的this陷阱的最全收集

在其他地方看到的,觉得解释的狠详细,特此分享 当有人问起你JavaScript有什么特点的时候,你可能立马就想到了单线程.事件驱动.面向对象等一堆词语,但是如果真的让你解释一下这些概念,可能真解释不清楚.有句话这么说:如果你不能向一个6岁小孩解释清楚一个东西,那么你自己也不懂这个东西.这句话或许有点夸张,但是极其有道理.个人觉得,如果需要掌握一门语言,掌握它的API只是学了皮毛,理解这门语言的精髓才是重点.提及JavaScript的精髓,this.闭包.作用域链.函数是当之无愧的.这门语言正式因

C++中的goto陷阱

尽管程序设计中不提倡使用goto语句,但是有的时候为了简化代码,难免会使用到goto.下面我要讨论的这个陷阱C语言程序中不会遇到,反而C++中稍不注意就会引起问题. 直接看以下代码: int _tmain(int argc, _TCHAR* argv[]) { int t1 = 1; if (t1 >0) { goto __next; } int t2 = 5; __next: t2++; return 0; } 这段代码在vs2008,以及vs2013上都能顺利编过,甚至不会有任何警告.但如果

锦程网考试由试题从模拟题中批量找出答案,Python

jincin的考试又来了,像往常一样会先有模拟题发下来,而考试题目几乎都在里面原题. 本来是,在考试时,把题目一题一题地在模拟题里搜,但觉得太累了. 于是写了一个Python的脚本批量查找,用到正则,由于不知道行尾是\r还是\n还是\r\n,干脆也用正则,而非split('\r')这么硬板了. 添了颜色,效果不错. Python: 效果: - 锦程网考试由试题从模拟题中批量找出答案,Python,布布扣,bubuko.com

Cocos2d-x 脚本语言Lua中的面向对象

Cocos2d-x 脚本语言Lua中的面向对象 面向对象不是针对某一门语言,而是一种思想.在面向过程的语言也能够使用面向对象的思想来进行编程. 在Lua中,并没有面向对象的概念存在,没有类的定义和子类的定义.但相同在Lua中能够利用面向对象的思想来实现面向对象的类继承. 一.复制表的方式面向对象 --Lua中的面向对象 --[[ 复制表方式面向对象 參数为一张表.通过遍历这张表取值,赋给一张空表,最后返回新建的表.来达到克隆表 ]] function clone(tab) local ins =

1.5Java语言(JDK中的命令行工具)

1.3.4 配置环境变量path(1)  在dos命令行中敲入javac,出现错误提示.  错误原理:当前执行的程序在当前目录下如果不存在,windows系统会在系统中已有的一个名为path的环境变量指定的目录中查找.如果还没有找到,就出现以上的错误提示.  所以进入到jdk安装路径\bin目录下,执行javac.看到javac参数提示信息. 1.5Java语言(JDK中的命令行工具),布布扣,bubuko.com