- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机面试题汇总 - C 语言(2)
文章来源: ?? 作者:sonew发布时间:2008-12-26 18:52:14 ?? 阅读次数:928 次
本文标签(Tag)
HYPERLINK /tag.php?ts=计算机面试题 \t _blank 计算机面试题 HYPERLINK /tag.php?ts=C \t _blank C
* 用宏定义写出 swap(x,y)#define swap(x, y)\x = x + y;\y = x - y;\x = x - y;?* 2.数组a[N],存放了1至N-1个数,其中某个数重复一次。写一个函数,找出被重复的数字.时间复杂度必须为o(N)函数原型:?int do_dup(int a[],int N)?* 一语句实现x是否为2的若干次幂的判断? int i = 512;? cout boolalpha ((i (i - 1)) ? false : true) endl;?* unsigned int intvert(unsigned int x,int p,int n)实现对x的进行转换,p为起始转化位,n为需要转换的长度,假设起始点在右边。如 x=0b0001 0001, p=4, n=3 转换后 x=0b0110 0001unsigned int intvert(unsigned int x,int p,int n) {? unsigned int _t = 0;? unsigned int _a = 1;? for(int i = 0; i n; ++i) {??? _t |= _a;??? _a = _a 1;? }? _t = _t p;? x ^= _t;? return x;}?* char * const p;? char const * p? const char *p? 上述三个有什么区别?char * const p; //常量指针,p的值不可以修改char const * p;//指向常量的指针,指向的常量值不可以改const char *p; //和char const *p?* main(){? int a[5]={1,2,3,4,5};?? int *ptr=(int *)(a+1);?? printf(%d,%d,*(a+1),*(ptr-1));}输出:2,5*(a+1)就是a[1],*(ptr-1)就是a[4],执行结果是2,5a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int)int *ptr=(int *)(a+1);则ptr实际是(a[5]),也就是a+5原因如下:a是数组指针,其类型为 int (*)[5];而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同a是长度为5的int数组指针,所以要加 5*sizeof(int)所以ptr实际是a[5]但是prt与(a+1)类型是不一样的(这点很重要)所以prt-1只会减去sizeof(int*)a,a的地址是一样的,但意思不一样,a是数组首地址,也就是a[0]的地址,a是对象(数组)首地址,a+1是数组下一元素的地址,即a[1],a+1是下一个对象的地址,即a[5].?* 请问以下代码有什么问题:int main(){? char a;? char *str=a;? strcpy(str,hello);? printf(str);? return 0;}没有为str分配内存空间,将会发生异常问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。?char* s=AAA;printf(%s,s);s[0]=B;printf(%s,s);有什么错?AAA是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。cosnt char* s=AAA;然后又因为是常量,所以对是s[0]的赋值操作是不合法的。?* 写一个“标准”宏,这个宏输入两个参数并返回较小的一个。? #define Min(X, Y) ((X)(Y)?(Y):(X))?* 嵌入式系统中经常要用到无限循环,你怎么用C编写死循环。? while(1){}或者for(;;)?* 关键字static的作用是什么?? 定义静态变量?* 关键字const有什么含意?? 表示常量不可以修改的变量。?* 关键字volatile有什么含意?并举出三个不同的例子?? 提示编译器对象的值可能在编译器未监测到的情况下改变。
您可能关注的文档
最近下载
- COLMO洗衣机工程师资格认证考试题及答案.doc VIP
- 《合理用药与用药安全》课件.ppt VIP
- 配件部经理岗位职责(24篇).docx VIP
- (人教2024版)英语八年级上册Unit 4 大单元教学设计(新教材).docx
- TCECS 179-2023 健康住宅建设技术规程.pdf VIP
- 数字孪生及车间实践第二篇数字孪生研究体系.pptx VIP
- 2025年四川省绵阳市初中学业水平考试语文真题试卷含参考答案与习作例文精品.pdf VIP
- 2024版行政管理培训课件.pptx VIP
- 《公安机关互联网安全监督检查规定》培训与解读课件.pptx VIP
- 数字孪生及车间实践第一篇数字孪生的内涵及研究应用现状.pptx VIP
文档评论(0)