发新帖我要提问
12
返回列表
打印

常见C语言问题

[复制链接]
楼主: 关小波522
手机看帖
扫描二维码
随时随地手机跟帖
21
关小波522|  楼主 | 2015-5-30 14:23 | 只看该作者 回帖奖励 |倒序浏览
程序的局部变量存在于(堆栈)中,全局变量存在于(静态区 )中,动态申请数据存在于( 堆)中。

使用特权

评论回复
22
关小波522|  楼主 | 2015-5-30 14:23 | 只看该作者
设有以下说明和定义:
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____
答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.
所以结果是 20 + 32 = 52.
当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

使用特权

评论回复
23
关小波522|  楼主 | 2015-5-30 14:24 | 只看该作者
队列和栈有什么区别?
队列先进先出,栈后进先出
5、写出下列代码的输出内容
#include<stdio.h>
int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
答:110

使用特权

评论回复
24
关小波522|  楼主 | 2015-5-30 14:24 | 只看该作者
请找出下面代码中的所以错误
说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”

1、#include"string.h"     //#include<string.h>
2、main()                //int main(void)
3、{
4、 char*src="hello,world";  //char *src="hello,world";
5、 char* dest=NULL;
6、 int len=strlen(src);      
7、 dest=(char*)malloc(len);  //dest=(char *)malloc(len+1);
8、 char* d=dest;            
9、 char* s=src[len];         //char *s=&src[len-1];  
10、 while(len--!=0)
11、 d++=s--;              //d++=s--;
                            //d=0;
12、 printf("%s",dest);
                             //free(dest);
13、 return 0;
14、}
答:
方法1:
int main(){
char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//要为\0分配一个空间
char* d = dest;
char* s = &src[len-1];//指向最后一个字符
while( len-- != 0 )
*d++=*s--;
*d = 0;//尾部要加\0
printf("%s\n",dest);
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露
return 0;
}

使用特权

评论回复
25
关小波522|  楼主 | 2015-5-30 14:25 | 只看该作者
方法2:
#include <stdio.h>
#include <string.h>
main()
{
char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0; i<len/2; i++)
{
t=str[i];
str[i]=str[len-i-1]; str[len-i-1]=t;
}
printf("%s",str);
return 0;
}

有以下表达式:
int a=248; b=4;int const c=21;const int *d=&a;
int *const e=&b;int const *f const =&a;
请问下列表达式哪些会被编译器禁止?为什么?
*c=32;d=&b;*d=43;e=34;e=&a;f=0x321f;
*c 这是个什么东东,禁止
*d 说了是const, 禁止
e = &a 说了是const 禁止
const *f const =&a; 禁止

使用特权

评论回复
26
关小波522|  楼主 | 2015-5-30 14:25 | 只看该作者
2.交换两个变量的值,不使用第三个变量。即a=3,b=5,交换之后a=5,b=3;
有两种解法, 一种用算术算法, 一种用^(异或)
a = a + b;
b = a - b;
a = a - b;
or
a = a^b;// 只能对int,char..
b = a^b;
a = a^b;
or
a ^= b ^= a;

使用特权

评论回复
27
关小波522|  楼主 | 2015-5-30 14:25 | 只看该作者
.c和c++中的struct有什么不同?
c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private

使用特权

评论回复
28
关小波522|  楼主 | 2015-5-30 14:26 | 只看该作者
.#include <stdio.h>
  #include <stdlib.h>
  void getmemory(char *p)
  {
    p=(char *) malloc(100);
    strcpy(p,"hello world");
  }
  int main( )
  {
    char *str=NULL;
    getmemory(str);
    printf("%s/n",str);
    free(str);
    return 0;
   }
程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险
5.char szstr[10];
  strcpy(szstr,"0123456789");
  产生什么结果?为什么?
  长度不一样,会造成非法的OS

使用特权

评论回复
29
关小波522|  楼主 | 2015-5-30 14:26 | 只看该作者
-1,2,7,28,,126请问28和126中间那个数是什么?为什么?
第一题的答案应该是4^3-1=63
规律是n^3-1(当n为偶数0,2,4)
      n^3+ 1(当n为奇数1,3,5)
答案:63

使用特权

评论回复
30
关小波522|  楼主 | 2015-5-30 14:26 | 只看该作者
用两个栈实现一个队列的功能?要求给出算法和思路!
设2个栈为A,B, 一开始均为空.
入队:
将新元素push入栈A;
出队:
(1)判断栈B是否为空;
(2)如果不为空,则将栈A中所有元素依次pop出并push到栈B;
(3)将栈B的栈顶元素pop出;
这样实现的队列入队和出队的平摊复杂度都还是O(1), 比上面的几种方法要好。

使用特权

评论回复
31
关小波522|  楼主 | 2015-5-30 14:27 | 只看该作者
在c语言库函数中将一个字符转换成整型的函数是atool()吗,这个函数的原型是什么?
函数名: 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);
}
2.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline
  3.直接链接两个信令点的一组链路称作什么?
PPP点到点连接

使用特权

评论回复
32
关小波522|  楼主 | 2015-5-30 14:27 | 只看该作者
接入网用的是什么接口?
接入网由业务节点接口(SNI)和用户网络接口(UNI)之间的一系列传送实体(如:线路设备和传输设施)组成,为供给电信业务而提供所需传送承载能力的实施系统,可经由管理接口(Q3)配置和管理。原则上对接入网可以实现的UNI和SNI的类型和数目没有限制。接入网不解释信令。

使用特权

评论回复
33
关小波522|  楼主 | 2015-5-30 14:27 | 只看该作者
.软件测试都有那些种类?
黑盒:针对系统功能的测试    白合:测试函数功能,各函数接口

使用特权

评论回复
34
关小波522|  楼主 | 2015-5-30 14:27 | 只看该作者
.确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段
  8.enum string
    {
    x1,
    x2,
    x3=10,
    x4,
    x5,
    }x;
   问x= 0x801005,0x8010f4  ;
  9.unsigned char *p1;
    unsigned long *p2;
    p1=(unsigned char *)0x801000;
    p2=(unsigned long *)0x810000;
    请问p1+5=  ;
        p2+5=  ;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则