ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

C/C++»ù´¡ÖªÊ¶ÎÊÌâ(Ò»)
2014-11-24 01:20:07 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:421´Î
Tags£ºC/C »ù´¡ÖªÊ¶ ÎÊÌâ

1.C/C++»ù´¡ÖªÊ¶ÎÊÌâ


a) ¹Ø¼ü×ÖvolatileÔÚ±àÒëʱÓÐʲôº¬Òå ²¢¸ø³öÈý¸ö²»Í¬Ê¹Óó¡¾°µÄÀý×Ó(¿ÉÒÔα´úÂë»òÕßÎÄ×ÖÃèÊö)¡£


b) CÓïÑÔÖÐstatic¹Ø¼ü×ֵľßÌå×÷ÓÃÓÐÄÄЩ


c) ÇëÎÊÏÂÃæÈýÖÖ±äÁ¿ÉùÃ÷ÓкÎÇø±ð Çë¸ø³ö¾ßÌ庬Òå


int const *p;


int* const p;


int const* const p


²Î¿¼´ð°¸


a) ÓÃvolatile¹Ø¼ü×Ö¶¨Òå±äÁ¿£¬Ï൱ÓÚ¸æËß±àÒëÆ÷£¬Õâ¸ö±äÁ¿µÄÖµ»áËæʱ·¢Éú±ä»¯£¬Ã¿´ÎʹÓÃʱ¶¼ÐèҪȥÄÚ´æÀïÖØжÁÈ¡ËüµÄÖµ£¬²¢²»ÒªËæÒâÕë¶ÔËü×÷ÓÅ»¯¡£


½¨ÒéʹÓÃvolatile±äÁ¿µÄ³¡Ëù£º


(1) ²¢ÐÐÉ豸µÄÓ²¼þ¼Ä´æÆ÷


(2) Ò»¸öÖжϷþÎñ×Ó³ÌÐòÖлá·ÃÎʵ½µÄ·Ç×Ô¶¯±äÁ¿£¨È«¾Ö±äÁ¿£©


(3) ¶àÏß³ÌÓ¦ÓÃÖб»¼¸¸öÈÎÎñ¹²ÏíµÄ±äÁ¿


b) ÔÚº¯ÊýÌ壬һ¸ö±»ÉùÃ÷Ϊ¾²Ì¬µÄ±äÁ¿ÔÚÕâÒ»º¯Êý±»µ÷Óùý³ÌÖÐά³ÖÆäÖµ²»±ä¡£


ÔÚÄ£¿éÄÚ£¨µ«ÔÚº¯ÊýÌåÍ⣩£¬Ò»¸ö±»ÉùÃ÷Ϊ¾²Ì¬µÄ±äÁ¿¿ÉÒÔ±»Ä£¿éÄÚËùÓú¯Êý·ÃÎÊ£¬µ«²»Äܱ»Ä£¿éÍâÆäËüº¯Êý·ÃÎÊ¡£ËüÊÇÒ»¸ö±¾µØµÄÈ«¾Ö±äÁ¿¡£


ÔÚÄ£¿éÄÚ£¬Ò»¸ö±»ÉùÃ÷Ϊ¾²Ì¬µÄº¯ÊýÖ»¿É±»Õâһģ¿éÄÚµÄÆäËüº¯Êýµ÷Óá£ÄǾÍÊÇ£¬Õâ¸öº¯Êý±»ÏÞÖÆÔÚÉùÃ÷ËüµÄÄ£¿éµÄ±¾µØ·¶Î§ÄÚʹÓá£


staticÈ«¾Ö±äÁ¿ÓëÆÕͨµÄÈ«¾Ö±äÁ¿ÓÐʲôÇø±ð£ºstaticÈ«¾Ö±äÁ¿Ö»³õʹ»¯Ò»´Î£¬·ÀÖ¹ÔÚÆäËûÎļþµ¥ÔªÖб»ÒýÓÃ;


static¾Ö²¿±äÁ¿ºÍÆÕͨ¾Ö²¿±äÁ¿ÓÐʲôÇø±ð£ºstatic¾Ö²¿±äÁ¿Ö»±»³õʼ»¯Ò»´Î£¬ÏÂÒ»´ÎÒÀ¾ÝÉÏÒ»´Î½á¹ûÖµ£»


staticº¯ÊýÓëÆÕͨº¯ÊýÓÐʲôÇø±ð£ºstaticº¯ÊýÔÚÄÚ´æÖÐÖ»ÓÐÒ»·Ý£¬ÆÕͨº¯ÊýÔÚÿ¸ö±»µ÷ÓÃÖÐά³ÖÒ»·Ý¿½±´;


c) Ò»¸öÖ¸Ïò³£ÕûÐÍÊýµÄÖ¸Õë


Ò»¸öÖ¸ÏòÕûÐÍÊýµÄ³£Ö¸Õë


Ò»¸öÖ¸Ïò³£ÕûÐÍÊýµÄ³£Ö¸Õë


2.ҪʹÒýÓÃpr´ú±í±äÁ¿¡°char*p¡±£¬ÔòprµÄ³õʼ»¯Óï¾äΪ__________


²Î¿¼´ð°¸


char * &pr=p£»


3.±í´ïʽ8&3µÄ½á¹ûÊÇ__________¡£


²Î¿¼´ð°¸


0


4.Éèint x£»£¬Ôò¾­¹ý£¨ £©ºó£¬Óï¾ä*px=0£»¿É½«xÖµÖÃΪ0¡£


A int * px£» B int const * px=&x£»


C int * const px=&x£» D const int * px=&x£»


²Î¿¼´ð°¸


C


5.д³öÏÂÁгÌÐòµÄÖ´Ðнá¹û¡£


# include


void fun(int£¬int£¬int * )£»


void main()


{


int x£¬y£¬z£»


fun (2£¬3£¬&x)£»


fun (4£¬x£¬&y)£»


fun (x£¬y£¬&z)£»


cout<


}


void fun(int a£¬int b£¬int * c )


{


b*=a£»


*c=b-a£»


}


²Î¿¼´ð°¸


4£¬12£¬44


Embedded Software Design Engineer


1 ¶Á³ÌÐò¶Î£¬»Ø´ðÎÊÌâ
int main(int argc,char *argv[])
{
int c=9,d=0;
c=c++%5;
d=c;
printf("d=%d\n",d);
return 0;
}
a) д³ö³ÌÐòÊä³ö
b) ÔÚÒ»¸ö¿ÉÒÆÖ²µÄϵͳÖÐÕâÖÖ±í´ïʽÊÇ·ñ´æÔÚ·çÏÕ£¿why


#include "stdio.h"
int a=0;
int b;
static char c;
int main(int argc,char *argv[])
{
char d=4;
static short e;


a++;
b=100;
c=(char)++a;
e=(++d)++;
printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);
return 0;
}
a) д³ö³ÌÐòÊä³ö
b) ±àÒëÆ÷Èç¹û°²ÅŸ÷¸ö±äÁ¿(a,b,c,d)ÔÚÄÚ´æÖеIJ¼¾Ö(eg. stack,heap,data section,bss section),×îºÃÓÃͼÐη½Ê½ÃèÊö¡£


2 ÖжÏÊÇǶÈëʽϵͳÖÐÖØÒªµÄ×é³É²¿·Ö£¬Õâµ¼ÖÂÁËÐí¶à±àÒ뿪·¢ÉÌÌṩһÖÖÀ©Õ¹£ºÈñê×¼CÖ§³ÖÖжϣ¬²úÉúÁËÒ»¸öеĹؼü×Ö__interrupt¡£ÏÂÃæµÄ´úÂë¾Í ʹÓÃÁË__interrupt¹Ø¼ü×ÖÈ¥¶¨ÒåÁËÒ»¸öÖжϷþÎñ×Ó³ÌÐò(ISR),ÇëÆÀÂÛÒÔÏÂÕâ¶Î´úÂë¡£
__interrupt double compute_area(double radius)
{
double area = PI * radius *radius;
printf("nArea = %f", area);
return area;
}


3 C/C++»ù´¡ÖªÊ¶ÎÊÌâ
a) ¹Ø¼ü×ÖvolatileÔÚ±àÒëʱÓÐʲôº¬Òå ²¢¸ø³öÈý¸ö²»Í¬Ê¹Óó¡¾°µÄÀý×Ó(¿ÉÒÔα´úÂë»òÕßÎÄ×ÖÃèÊö)¡£
b) CÓïÑÔÖÐstatic¹Ø¼ü×ֵľßÌå×÷ÓÃÓÐÄÄЩ
c) ÇëÎÊÏÂÃæÈýÖÖ±äÁ¿ÉùÃ÷ÓкÎÇø±ð Çë¸ø³ö¾ßÌ庬Òå
int const *p;
int* const p;
int const* const p;


4 ǶÈëʽϵͳÏà¹ØÎÊÌâ
a) ¶ÔÓÚÕûÐαäÁ¿A=0x12345678,Çë»­³öÔÚlittle endian¼°big endianµÄ·½Ê½ÏÂÔÚÄÚ´æÖÐÊÇÈçºÎ´æ´¢µÄ¡£
b) ÔÚARMϵͳÖУ¬º¯Êýµ÷ÓõÄʱºò£¬²ÎÊýÊÇͨ¹ýÄÄÖÖ·½Ê½´«µÝµÄ
c) ÖжÏ(interrupt,Èç¼üÅÌÖжÏ)ÓëÒì³£(exception,Èç³ýÁãÒì³£)ÓкÎÇø±ð


5 ÉèÖÜÆÚÐÔÈÎÎñP1,P2,P3µÄÖÜÆÚΪT1,T2,T3·Ö±ðΪ100£¬150£¬400£»Ö´ÐÐʱ¼ä·Ö±ðΪ20£¬40£¬100¡£ÇëÉè¼ÆÒ»ÖÖµ÷¶ÈËã·¨½øÐÐÈÎÎñµ÷¶È£¬Âú×ãÈÎÎñÖ´ÐÐÖÜÆÚ¼°ÈÎÎñÖÜÆÚ¡£


6 ÓÅÏȼ¶·´×ªÎÊÌâÔÚǶÈëʽϵͳÖÐÊÇÒ»ÖÐÑÏÖصÄÎÊÌ⣬±ØÐë¸øÓë×ã¹»ÖØÊÓ¡£
a) Ê×ÏÈÇë½âÊÍÓÅÏȼ¶·´×ªÎÊÌâ
b) ºÜ¶àRTOSÌṩÓÅÏȼ¶¼Ì³Ð²ßÂÔ(Priority inheritance)ºÍÓÅÏȼ¶Ì컨°å²ßÂÔ(Priority ceilings)ÓÃÀ´½â¾öÓÅÏȼ¶·´×ªÎÊÌ⣬ÇëÌÖÂÛÕâÁ½ÖÖ²ßÂÔ¡£
²Î¿¼´ð°¸:
1 5 //ÎҸоõ´ð°¸Ó¦¸ÃÊÇ4,µ«±ê×¼´ð°¸¸øµÄÊÇ5...
´æÔÚ·çÏÕ£¬ÒòΪc=c++%5;Õâ¸ö±í´ïʽ¶ÔcÓÐÁ½´ÎÐ޸ģ¬ÐÐΪ䶨Ò壬cµÄÖµ²»È·¶¨
int a=0; // data section
int b; // data section
static char c; // BSS
int main(int argc,char *argv[])
{
char d=4; // stack
static short e; // BSS
a++;
b=100;
c=(char)++a;
e=(++d)++;
printf("a=%d, b=%d, c=%d, d= %d, e=%d",a,b,c,d,e);
return 0;
}
a=2,b=100,c=2,d=6,e=5
2 a)ISR²»ÄÜ·µ»ØÒ»¸öÖµ£»
b)ISR²»ÄÜ´«µÝ²ÎÊý£»
c)¸¡µãÒ»°ã¶¼ÊDz»¿ÉÖØÈëµÄ£»
d)printfº¯ÊýÓÐÖØÈëºÍÐÔÄÜÉϵÄÎÊÌâ¡£
3 a) ÓÃvolatile¹Ø¼ü×Ö¶¨Òå±äÁ¿£¬Ï൱ÓÚ¸æËß±àÒëÆ÷£¬Õâ¸ö±äÁ¿µÄÖµ»áËæʱ·¢Éú±ä»¯£¬Ã¿´ÎʹÓÃʱ¶¼ÐèҪȥÄÚ´æÀï
ÖØжÁÈ¡ËüµÄÖµ£¬²¢²»ÒªËæÒâÕë¶ÔËü×÷ÓÅ»¯¡£
½¨ÒéʹÓÃvolatile±äÁ¿µÄ³¡Ëù£º
(1) ²¢ÐÐÉ豸µÄÓ²¼þ¼Ä´æÆ÷
(2) Ò»¸öÖжϷþÎñ×Ó³ÌÐòÖлá·ÃÎʵ½µÄ·Ç×Ô¶¯±äÁ¿£¨È«¾Ö±äÁ¿£©
(3) ¶àÏß³ÌÓ¦ÓÃÖб»¼¸¸öÈÎÎñ¹²ÏíµÄ±äÁ¿
b) ÔÚº¯ÊýÌ壬һ¸ö±»ÉùÃ÷Ϊ¾²Ì¬µÄ±äÁ¿ÔÚÕâÒ»º¯Êý±»µ÷Óùý³ÌÖÐά³ÖÆäÖµ²»±ä¡£
ÔÚÄ£¿éÄÚ£¨µ«ÔÚº¯ÊýÌåÍ⣩£¬Ò»¸ö±»ÉùÃ÷Ϊ¾²Ì¬µÄ±äÁ¿¿ÉÒÔ±»Ä£¿éÄÚËùÓú¯Êý·ÃÎÊ£¬µ«²»Äܱ»Ä£¿éÍâÆäËüº¯Êý
·ÃÎÊ¡£ËüÊÇÒ»¸ö±¾µØµÄÈ«¾Ö±äÁ¿¡£
ÔÚÄ£¿éÄÚ£¬Ò»¸ö±»ÉùÃ÷Ϊ¾²Ì¬µÄº¯ÊýÖ»¿É±»Õâһģ¿éÄÚµÄÆäËüº¯Êýµ÷Óá£ÄǾÍÊÇ£¬Õâ¸öº¯Êý±»ÏÞÖÆÔÚÉùÃ÷ËüµÄ
Ä£¿éµÄ±¾µØ·¶Î§ÄÚʹÓá£
staticÈ«¾Ö±äÁ¿ÓëÆÕͨµÄÈ«¾Ö±äÁ¿ÓÐʲôÇø±ð£ºstaticÈ«¾Ö±äÁ¿Ö»³õʹ»¯Ò»´Î£¬·ÀÖ¹ÔÚÆäËûÎļþµ¥ÔªÖб»ÒýÓÃ;
static¾Ö²¿±äÁ¿ºÍÆÕͨ¾Ö²¿±äÁ¿ÓÐʲôÇø±ð£ºstatic¾Ö²¿±äÁ¿Ö»±»³õʼ»¯Ò»´Î£¬ÏÂÒ»´ÎÒÀ¾ÝÉÏÒ»´Î½á¹ûÖµ£»
staticº¯ÊýÓëÆÕͨº¯ÊýÓÐʲôÇø±ð£ºstaticº¯ÊýÔÚÄÚ´æÖÐÖ»ÓÐÒ»·Ý£¬ÆÕͨº¯ÊýÔÚÿ¸ö±»µ÷ÓÃÖÐά³ÖÒ»·Ý¿½±´
c) Ò»¸öÖ¸Ïò³£ÕûÐÍÊý

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 5 ÏÂÒ»Ò³ βҳ 1/5/5
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºÊ²Ã´ÊǹþÏ£±í£¿ ÏÂһƪ£º³ÌÐòԱӦƸ×î±ä̬µÄÃæÊÔ¾­Àú

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿