每日一题
find12
这个作者很懒,什么都没留下…
展开
-
中断
11. 中断是嵌入式系统中重要的组成部分,这导致了很多编译开发商提供一种扩展—让标准C支持中断。具代表事实是,产生了一个新的关键字 __interrupt。下面的代码就使用了__interrupt关键字去定义了一个中断服务子程序(ISR),请评论一下这段代码的。__interrupt double compute_area (double radius) { double area =...原创 2020-02-14 19:25:47 · 331 阅读 · 0 评论 -
设置一绝对地址为0x67a9的整型变量的值为0xaa66
这一问题测试你是否知道为了访问一绝对地址把一个整型数强制转换(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下: int *ptr; ptr = (int *)0x67a9; *ptr = 0xaa55; ...原创 2020-02-14 18:50:24 · 1347 阅读 · 1 评论 -
关键字volatile有什么含意 并给出三个不同的例子
一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) ...原创 2020-02-14 18:17:31 · 423 阅读 · 0 评论 -
const用法
int a = 10; int *p = &a; 此时p可以被修改,*p也可以被修改 那么当使用const修饰时,const到底修饰的是p还是*p呢?与a无关 const int *p = &a; 此时const修饰的是*p,也就是p可以被修改,*p不能被修改 int *const p = &a; 此时const修饰的是p,也就是*p可...原创 2019-07-25 22:19:34 · 129 阅读 · 0 评论 -
用变量a给出下面的定义
用变量a给出下面的定义a) 一个整型数(An integer) b) 一个指向整型数的指针(A pointer to an integer) c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer) d) 一个有10个整型数的数组(An array of 10 integers) e) 一个有10个指针的数组,该指针是指...原创 2020-02-14 16:53:38 · 3099 阅读 · 0 评论 -
已知一个数组table,用一个宏定义,求出数据的元素个数
#define NTBL (sizeof(table)/sizeof(table[0]))原创 2020-02-14 00:06:37 · 5168 阅读 · 2 评论 -
对绝对地址0x100000赋值 让程序跳转到绝对地址是0x100000去执行
1,要对绝对地址0x100000赋值,我们可以用(unsigned int*)0x100000 = 1234;2,那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?*((void (*)( ))0x100000 ) ( );首先要将0x100000强制转换成函数指针,即:(void (*)())0x100000然后再调用它:*((void (*)())...原创 2020-02-14 00:04:54 · 3582 阅读 · 1 评论 -
*(a+1), *(ptr-1)
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,5&a+1不是首地址+1,系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5个int...原创 2020-02-13 18:51:01 · 1307 阅读 · 0 评论 -
数组比较
char str1[] = "abc";char str2[] = "abc";const char str3[] = "abc";const char str4[] = "abc";const char *str5 = "abc";const char *str6 = "abc";char *str7 = "abc";char *str8 = "ab...原创 2020-02-13 18:00:32 · 390 阅读 · 0 评论 -
什么是预编译?何时需要预编译?
预编译又称预处理,是整个编译过程最先做的工作,即程序执行前的一些预处理工作。主要处理#开头的指令。如拷贝#include包含的文件代码、替换#define定义的宏、条件编译#if等。何时需要预编译:总是使用不经常改动的大型代码体。 程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。...转载 2020-02-13 16:34:47 · 6669 阅读 · 1 评论 -
用宏定义写出swap(x,y)
#define swap(x, y)x = x + y;y = x - y;x = x - y原创 2020-02-13 16:32:30 · 822 阅读 · 0 评论 -
C语言 求出一组数据的最小值及最小值在这组数据中的位置
#include<stdio.h>int main(){ int a[100],n,i,min; printf("输入数组元素个数:\n"); scanf("%d",&n); printf("输入%d个整数:\n",n); if(n<1||n>100) return 0;//程序读到return后就不再执行 for(i=0;i<n;i++...转载 2019-11-29 17:43:25 · 7763 阅读 · 0 评论 -
要使指针变量p指向2维数组A的第1个元素,正确的赋值表达式是()。
p=A或p=A[0]p=A[0]或p=A[0][0]p=A[0]或p=&A[0][0]p=A或p=&A[0][0]P=A, 是错误的,A代表的是二维数组中,数组A[0]的地址,和元素A[0][0]的地址在 数值上是一样的,但是不能直接把A赋给P,原因是它们的类型不同。此处应该明白A是一个二级的指针,所以p=A就是一个错误的语句...原创 2019-08-12 23:35:26 · 2474 阅读 · 0 评论 -
执行printf( “ %5s ” , “abcdefg ” ) 后,则输出结果为()
执行printf( “ %5s ” , “abcdefg ” ) 后,则输出结果为()abcdefg"%5s",表示输出至少5个字符,不够的话,左侧用空格补。%.5s,最多输出5个字符原创 2019-08-12 01:04:46 · 3900 阅读 · 0 评论 -
浮点型在内存的存储方式与整型不一样
浮点型只能近似的表示某个实数 浮点型在内存的存储方式与整型不一样 float:3.25 32位 符号位:1位 0 s 指数位:8位 1000 0010 E 小数位:23位 000 0100 0000 0000 0000 0000 M (-1)^s*2^(E-127)*1.M E:0-254 ...原创 2019-07-22 17:21:45 · 1144 阅读 · 1 评论 -
拷贝构造函数调用情况
拷贝构造函数只有在以下三种情况下才会被调用:1) 一个对象作为函数参数,以值传递的方式传入函数体;2) 一个对象作为函数返回值,以值传递的方式从函数返回;3) 一个对象用于给另外一个对象进行初始化(常称为赋值初始化)。...原创 2019-07-28 19:11:58 · 520 阅读 · 0 评论 -
下列指令中源操作数和目的的操作数采用的寻址方式是
原创 2019-07-28 19:10:30 · 10364 阅读 · 0 评论 -
具有12个关键字的有序表,折半查找的平均查找长度()
将12个数画成完全二叉树,第一层有1个、第二次2个、第三层4个,第四层只有5个。二分查找时:第一层需要比较1次第二两个数,每个比较2次第三层四个数,每个比较3次第四层五个数,每个比较4次则平均查找长度即为:(1+2*2+3*4+4*5)/12 = 37/12 = 3.0833 即为 A、3.1...原创 2019-07-28 18:55:10 · 30720 阅读 · 2 评论 -
下面协议中,用于WWW传输控制的是()
HTTPURL是地址,用于寻找服务器SMTP是简单邮件传输协议,是用于发送邮件的HTML是网页的编辑语言,描述了网页的内容和显示方式原创 2019-07-28 18:53:03 · 7239 阅读 · 0 评论 -
串行通信的数据位,起始位,停止位?
参考链接单片机串口通信一般是11位,起始位1bit,数据位8bit,校验位1bit,停止位1bit,串口通信分两种一种是同步通信,一种是异步通信,像ps\2键盘就是同步,一般的单片机下载都是异步通信,起始位表示过了这个位就是数据位了,接着8位数据,然后校验,然后停止位,停止位表示这一桢数据结束。最常用的“数据帧”格式是(n,8,1):1、n的意思是无“奇偶校验”,即起始位;...转载 2019-07-28 00:16:33 · 21850 阅读 · 0 评论 -
IPC对象
参考链接IPC对象是活动在内核级别的一种进程间通信的工具。存在的IPC对象通过它的标识符来引用和访问,这个标识符是一个非负整数,它唯一的标识了一个IPC对象,这个IPC对象可以是消息队列或信号量或共享存储器中的任意一种类型。在Linux系统中标识符被声明成整数,所以可能存在的最大标识符为65535。这里标识符与文件描述符有所不同,使用open函数打开一个文件时,返回的文件描述符的值为当前进程最...转载 2019-07-28 00:10:42 · 515 阅读 · 0 评论 -
C语言递归实现n的阶乘(n!)
原文链接非负整数n的阶乘可以表示为n! (读作:n的阶乘),其定义如下:n! = n·(n - 1)• (n - 2)· …·1 (n大于或等于l),且n = 0时,n! = l例如,5 ! = 5·4·3·2·1 = 120。请编写一个程序,读入一个非负整数,计算并输出其阶乘。思路: 阶乘 就是每次用自己乘以自己-1,然后用自己-1在乘自己-1-1……利用递归的性质可以很好的实现这...转载 2019-07-26 00:50:11 · 10068 阅读 · 0 评论 -
define定义一个宏表明1年中有多少秒
原文链接用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)分析:1、#define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2、懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。3、意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器...转载 2019-07-22 17:57:17 · 3608 阅读 · 0 评论 -
编程实现有1,2,3,4这四个数字,组成互不相同且不重复的三位数,并且输出具体数值
原文链接#include<stdio.h>int main(){ int i,j,k; printf("\n"); for(i=1;i<5;i++) { for(j=1;j<5;j++) { for(k=1;k<5;k++) { ...转载 2019-07-22 18:03:27 · 4641 阅读 · 0 评论 -
算法的5大特征
确定性,能行性,输入,输出,有穷性/有限性原创 2019-07-27 00:40:33 · 702 阅读 · 0 评论 -
linux 下某文件权限为drw -r r--,用数值形式表示该权限,则八进制数为_____,文件类型为______
原文链接linux 下某文件权限为drw -r r--,用数值形式表示该权限,则八进制数为_____,文件类型为______各权限用十进制数字表示分别是:值 表示的意义4 表示文件或者目录的读权限2 表示文件或者目录的写权限1 表示文件或者目录的执行权限所以这个文件的权限为:644而由于它的第一个字母是"d",所以是文件夹,也就是目录.故两个空,分别是:644,目录文件...转载 2019-08-01 01:11:12 · 22853 阅读 · 0 评论 -
函数指针,指针函数,延长局部变量的生命周期
函数指针与指针函数:函数指针:指向函数的指针例如:定义一个指针,指向一个有一个int类型的参数并且返回值也为int类型的函数int fun(int a);int (*p)(int) = fun; 指针函数:返回值为指针的函数#include <stdio.h> char *fun() { char str[] = "hello world!";...原创 2019-07-31 23:42:07 · 1460 阅读 · 0 评论 -
对于continue和bireak的说法,那句是错误的?()
对于continue和bireak的说法,那句是错误的?(C)A. 除了switch语言和循环语句,其他时候均不能使用breakB. continue并非结束整个循环,而仅是结束当次循环C. if语句中允许出现break和continueD. break语言执行后,整个循环结束,不在执行循环判断条件...原创 2019-07-31 23:55:10 · 230 阅读 · 0 评论 -
c语言中 X=10 x-=x+x 等于多少 为什么?
等于-10因为+的优先级比-=高一些,所以先计算x+x,变成了x -= 20,结果为-10原创 2019-07-27 21:45:00 · 24055 阅读 · 1 评论 -
在rs-232c接口标准中,表示逻辑1的电平和表示逻辑0的电平各是多少?
原文链接EIA-RS-232C对电气特性、逻辑电平和各种信号线功能都作了规定。 在TxD和RxD数据上: (负逻辑定义) 逻辑1(MARK)= -3~-15V 逻辑0(SPACE)= +3~+15V 在RTS、CTS、DSR、DTR和DCD等控制线上: (正逻辑定义) 信号有效(接通,ON状态,正电压)= +3~ +15V 信号无效(断开,OFF状态,负电压)=...转载 2019-07-27 21:50:40 · 13966 阅读 · 0 评论 -
下面关于ARM嵌入式处理器的GPIO的叙述中,错误的是( )。
参考链接8[单选题] 下面关于ARM嵌入式处理器的GPIO的叙述中,错误的是( )。 A.GPIO的引脚一般是三态的,即具有0态,1态和高阻状态 B.有些GPIO引脚具有多种功能,通过设置相关控制寄存器的某些位来进行选择 C.有些ARM芯片的GPIO引脚可以设置成具有中断输入功能 D.只有几个按键的简单键盘接口,应采用专用的键盘接口芯片来实现,而不宜采用GPIO来设计...转载 2019-07-27 21:56:33 · 1537 阅读 · 0 评论 -
以太网中计算机间以帧为单位进行通信,下列选项中不属于以太网数据帧内容的是( )。
参考链接14[单选题] 以太网中计算机间以帧为单位进行通信,下列选项中不属于以太网数据帧内容的是( )。 A.IP地址 B.MAC地址 C.有效载荷 D.校验信息 参考答案:A 参考解析:以太网数据帧:前导码(7字节)、帧起始定界符(1字节)、目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度(2字节)、数据(46~1500字节)、帧校验序列(...转载 2019-07-27 21:59:04 · 2178 阅读 · 0 评论 -
大小端及判定方式
大小端:大端存储:低字节数据存放在高地址,高字节数据存放在低地址小端存储:低字节数据存放在低地址,高字节数据存放在高地址STM32F101xx和STM32F103xx仅支持小端模式,虽然Cortex-M3是大小都支持的。判定方式一、利用联合体在union中所有的数据成员共用一个空间,同一时间只能储存其中一个数据成员,所有的数据成员具有相同的起始地址。联合体变量的各个成员...原创 2019-07-26 01:08:35 · 467 阅读 · 0 评论 -
调用free函数后,p指针指向什么
参考链接int *p;p = (int*)malloc(sizeof(int));free(p);问题是 free 后,p 指针还存在吗?如果存在,那么 p 是指向 NULL 吗?或者是野指针?指向原来的地址,但是那个地址所代表的内存已经被释放,不能再使用了,这就是野指针。...转载 2019-07-27 22:29:49 · 2026 阅读 · 0 评论 -
malloc函数内存什么地方申请空间
https://zhidao.baidu.com/question/477779079.html内存分为堆区,栈区,静态区,代码区。 全局变量和静态变量存放在静态区,局部变量存在在栈区,动态申请的变量(即new,malloc函数申请的变量)存放在堆区。...转载 2019-07-27 23:46:41 · 5518 阅读 · 0 评论 -
c语言问题 局部变量能不能和全局变量重名?
https://zhidao.baidu.com/question/559969934179969244.html能,局部会屏蔽全局。要用全局变量,需要使用 "::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用...转载 2019-07-27 23:49:44 · 5665 阅读 · 0 评论 -
如果没用PRIVATE关键字定义类的数据成员,则默认为是什么
参考链接1、如果前面有protected、private、public等关键字,那么其后的所有声明沿用此关键字,直到出现另一个类似的关键字时,才更换访问属性。2、如果在出现第一个访问域关键字之前还有变量、函数的声明,那么:class类中默认是privatestruct结构中默认是public...转载 2019-07-28 00:01:30 · 6649 阅读 · 0 评论 -
Linux设备类型有哪些?
原文链接字符设备:以字节流形式被访问的设备,比如字符终端和串口设备块设备:以数据块形式被访问的设备,比如硬盘、光盘等网络设备:主机与主机之间进行数据交换的设备...转载 2019-07-28 00:08:34 · 9422 阅读 · 0 评论 -
自己实现strcpy,strncpy,strncat,strcmp,strlen的功能
原文链接#include <stdio.h>#define MAX_SIZE 1024char * my_strcpy(char *dest,char *src){char *temp = dest;while(*src != '\0'){*temp = *src;temp++;src++;}*temp = '\0';return dest;}char...转载 2019-07-25 18:08:12 · 125 阅读 · 0 评论