c语言面试题重点整理·基础类
来源:互联网 发布:黑暗迪迦官方数据无限 编辑:程序博客网 时间:2024/05/17 22:42
最近又面临面试把这些常见的题型记录一下,不足的地方后面再补充:
(1) 对const的理解
定义:语言关键字const就是用来限定一个变量不允许被改变的修饰符(Qualifier),就只能修改为只读变量;
指针和const的搭配来考察:
1)、const在前面
const char *pContent; //*pContent是const, pContent可变
const (char *) pContent; //pContent是const,*pContent可变
char* const pContent; //pContent是const,*pContent可变
const char* const pContent; //pContent和*pContent都是const
2)、const在后面,与上面的声明对等
char const * pContent; // *pContent是const, pContent可变
(char *) const pContent; //pContent是const,*pContent可变
char* const pContent; // pContent是const,*pContent可变
char const* const pContent; // pContent和*pContent都是const
例题:
1)已知const char * node="ABC";下列语句合法的是___.(D)
- node[2] = 'k';
- *node[2]='k';
- *node = "xyz";
- node="xyz";//node指向的内容不可改变,但是可以改变node的指向
int a=248, b=4;int const c=21;const int *d=&a; int *const e=&b;int const *f const =&a;
- c=32//变量c的值不可改变
- *d=43//d指向的内容不能被修改
- e=&a //e指向地址不能改变
- f=0x321f //都不能改变
- d=&b
- *e=34
2) typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名;
#define DOUBLE(x) x+x i = 5*DOUBLE(5)
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。
#define clr_bit(val,bit) val &= ~(1<<bit)
void func(char str_arg[100]){ cout<<sizeof(str_arg)<<endl;}int main(int argc,char* argv[]){ char str[]="Hello"; char *p=str; cout<<sizeof(str)<<endl; cout<<sizeof(p)<<endl; func("test"); return 0;}
void_test(){ char x[]="10jqka"; char y[20]="10jqka"; printf("%d,%d,%d,%d,%d,%d", sizeof(char),sizeof(char*), sizeof(x),strlen(x), sizeof(y),strlen(y),}
char *str = arr;
求:
sizeof(str) = ;4
strlen(str) = ;5
main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); }
- 3,5
- 2,4
- 2,5
- 3,4
int s[2][3] = {0}, (*p)[3], i, j;p = s;i = j = 1;
- *(*(p+i)+j)
- *(p[i]+j)
- *(p+i)+j
- (*(p+i))[j]
int a[2][2][3]= { {{1,2,3},{4,5,6}},{{7,8,9},{10,11,12}}};int *ptr=(int *)(&a+1);printf(“%d %d”, *(int*)(a+1), *(ptr-1));
- 7 12
- 1 6
- 1 3
- 7 9
(7) i++和++i
i++在该语句执行完自加1,++i是先加1;
例题:
(1)i=4,那么语句:j=i+++1,执行后的结果应该是()(B)
- i=4,j=6
- i=5,j=5
- i=5,j=6
- i=6,j=6
答案:B
- c语言面试题重点整理·基础类
- c语言面试题重点整理·简单编程类
- c语言面试题重点整理·单链表操作
- c语言基础面试题
- c语言基础面试题
- 《C语言深度解剖》面试题整理
- 《C语言深度剖析》面试题整理
- 基础面试题整理
- C语言基础笔试面试题
- C语言基础面试题(一)
- 【c语言】单链表的基础面试题
- C语言经典面试题(基础题)
- c语言实现单链表基础面试题
- 【C#】面试题整理
- 【C#】面试题整理
- C面试题整理
- 《高质量程序设计指南:C++/C语言》面试题整理
- Java基础面试题总汇(重点)
- IOS 开发进阶--网络多线程--内存的结构的基本理解
- 求阶乘值。
- Nginx-rtmp直播服务器编译配置
- 第二章第十题
- 去除继承ActionBarActivity的Activity中的ActionBar
- c语言面试题重点整理·基础类
- Mac中分析hprof文件查找内存泄露
- 用java语言实现单链表
- Linux下的多线程编程
- CocoaPods介绍及使用
- 视图和视图解析器
- java内存泄露和内存溢出(二)
- 下棋问题 八个方向判断 模拟求解
- ios图片圆角处理