1.static有什么用途?(请至少说明两种)
1)限制变量的作用域
2)设置变量的存储域(堆,主动分配内存也是堆)
 
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
    2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
    3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
 
 
4.全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在栈
 
 
6.堆栈溢出一般是由什么原因导致的?
 堆栈溢出一般是循环的递归调用导致的,如果使用的大数据结构的局部变量,也可能导致堆栈溢出。
 没有回收垃圾资源导致的是内存泄露最后内存耗尽。
 
 
20.不能做switch()的参数类型是:
switch的参数不能为实型。(只能是int char
 
9.写出float x 与“零值”比较的if语句。
if(x<0.000001&&x>-0.000001)   
 
3.c语言库函数中将一个字符转换成整型的函数是atol()吗,这个函数的原型是什么?
函数名: atol
功能: 把字符串转换成长整型数
函数的原型: long atol(const char *nptr);
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
long l;
char *str = "98765432";
 
l = atol(lstr);
printf("string = %s integer = %ld\n", str, l);
return(0);
}
 
 
1.对于一个频繁使用的短小函数,C语言中应用什么实现,C++中应用什么实现?
c用宏定义,c++inline
 
 
8.软件测试都有那些种类?
黑盒:针对系统功能的测试    白合:测试函数功能,各函数接口
 
9.确定模块的功能和模块的接口是在软件设计的那个阶段完成的?
递归函数c语言规则概要设计阶段
 
 
 
11.unsignedchar *p1;
    unsigned long *p2; 
    p1=(unsigned char *)0x801000;
    p2=(unsigned long *)0x810000;
    请问p1+5=  ;
         p2+5=  ;
答:p1+5=0x801005  ;
           p2+5=0x810014  ;
 
 
1.请问下面程序有什么错误?
  int a[60][250][1000],i,j,k;
  for(k=0;k<1000;k++)
   for(j=0;j<250;j++)
    for(i=0;i<60;i++)
      a[i][j][k]=0;
把循环语句内外换一下
(编译的时候没错,运行的时候出错,但这个数组太大,如果放在栈中,还是会溢出,要作为全局变量)
 
2.#defineMax_CB 500
    void LmiQueryCSmd(Struct MSgCB * pmsg)
    {
    unsigned char ucCmdNum;
    ......
   
    for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++)
      {
      ......;
      }
死循环(unsigned char 0 255)
 
3.以下是求一个数的平方的程序,请出错误:
    #define SQUARE(a)((a)*(a))
   int a=5;
    int b;
b=SQUARE(a++);//a被加了2  a=7,b=25
 
2、有一个16位的整数,每4位为一个数,写函数求他们的和。
解释:
整数110101*********1
  1101+0101+1011+0111
/* n就是16位的数,函数返回它的四个部分之和 */
char SumOfQuaters(unsigned short n)
{
    charc = 0;
    inti = 4;
    do
    {
        c += n & 15;
       n = n >> 4;
    }while (--i);
   return c;
}
 
3、两个字符串,s,t;t字符串接到s字符串尾,s字符串有足够的空间存放t字符串
void connect(char *s, char *t, int i)
{
char *q = t;
char *p =s;
if(q ==NULL)return;
while(*p!='\0')
{
p++;
}
while(*q!=0)
{
*p=*q;
p++;
q++;
}
*p = '\0';
}
void main()
{
charp[7]="ABC";
charp2[]="EFG";
connect(p,p2,3);
printf("%s",p);
}
 
4、分析下面的代码:
char*a = "hello";
char*b = "hello";
if(a==b)
printf("YES");
else
printf("NO");
 
 
 
常量字符串。位于静态存储区,它在程序生命期内恒定不变。如果编译器优化的话,会有可能ab同时指向同一个hello的。则地址相同。如果编译器没有优化,那么就是两个不同的地址,则不同。对VC,是相同。
 
 
 
5、局部变量能否和全局变量重名?  
 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,
在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。