Chinaunix首页 | 论坛 | 博客
  • 博客访问: 862837
  • 博文数量: 156
  • 博客积分: 6553
  • 博客等级: 准将
  • 技术积分: 3965
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 18:36
文章存档

2012年(3)

2011年(43)

2010年(110)

分类: C/C++

2010-10-21 16:32:01

第一题、

strtok函数在使用上要注意什么问题。
   这个问题我不知道能不能回答全面,因为实在是用的很少。这个函数的作用是分割字符串,但是要分割的字符串不能是常量,这是要注意的。比如先定义一个字符串:char array[]="part1,part2";strtok的原形是char *strtok(char *string, char *delim);,我们将","作为分隔符,先用pt=strtok(array,",");,得到的结果print出来就是"part1",那后面的呢,要写成pt=strtok(NULL,",");,注意,要用NULL,如果被分割的字符串会被分成N段,那从第二次开始就一直要用NULL。总结起来,需要注意的是:被分割的字符串和分隔符都要使用变量;除第一次使用指向字符串的指针外,之后的都要使用NULL;注意使用这个函数的时候千万别把指针跟丢了,不然就全乱了。

如下例子:

#include
#include
int main(void)
{
 char input[16] = "abc,d";
 char *p;
 p = strtok(input, ",");
 if (p) printf("%s\n", p);
 p = strtok(NULL, ",");
 if (p) printf("%s\n", p);
 return 0;
}

第二题目:考查逗号表达式

main()
{
  int a, b,c, d;
  a=3;
  b=5;
  c=a,b;
  d=(a,b);

  printf("c=%d" ,c);
  printf("d=%d" ,d);

}

这段程序的输出是:

(a) c=3 d=3
(b) c=5 d=3
(c) c=3 d=5
(d) c=5 d=5

答案为(c)

 
第三题

9:考查自加操作(++)

main()
{
  int i=3;
  int j;

  j = sizeof(++i+ ++i);

  printf("i=%d j=%d", i ,j);
}

这段程序的输出是:

(a) i=4 j=2
(b) i=3 j=2
(c) i=3 j=4
(d) i=3 j=6
答案为(c)
9:  (c)
sizeof 
操作符给出其操作数需要占用的空间大小,它是在编译时就可确定的,所以其操作数即使是一个表达式,也不需要在运行时进行计算.( ++i + ++ i  )是不会执行的,所以

i 的值还是3
第四题、

 Union data2
{
int       i;
char    c1;
char    c2[9]; 
};

   sizeof(union data2)的值为12,该共用体占内存空间最大的基本数据类型为int,其长度为4,所以该共用体以4来对齐。该共用体的长度取决于字符c2,其长度为99不是4的倍数,要进行对齐,因此实际分配的存储空间为12.

阅读(675) | 评论(1) | 转发(0) |
0

上一篇:C语言笔试题-4

下一篇:linux系统调用手册

给主人留下些什么吧!~~

chinaunix网友2010-10-22 14:41:12

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com