




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.Basic c question.1.Question:where in memory the variables are stored?Local variables, global variables, static.AnswerLocal variables sit in Stack.Global and static goto Data segment.Dynamic memory comes from Heap.2.Questioncan you explian the meaning for the follwoing programchar *c1, *c2, *c3, *c4
2、, *c5 ;char analysis8 = 'a', 'n', 'a', 'l', 'y', 's', 'i' ,'s'int main()c5 = c4 = analysis;+c4;c3 = &analysis6;c2 = c5 + 2 ;c1 = &analysis7 - 3 ;printf ("%ct%ct%ct%ct%c", *c1,*c2,*c3,*c4,*c5);return 0;Answerc1, c2, c3,
3、 c4 and c5 are pointers (which can hold addresses). analysis is an array variable which is holding the string "analysis". >c5 = c4 = analysis;The starting address of the array is given to c5 and c4. Hence they point to first character 'a' in the array.>+c4;c4 is incremented b
4、y 1. Hence points to 'n' in the array.>c3 = &analysis6;c3 is given the address of 7th character (count from 0) of the array. Hence c3 points to character 'i'. >c2 = c5 + 2 ;.c5 points to first character. plus 2 means, c2 points to 3rd character 'a' (second 'a
5、9; in the string).>c1 = &analysis7 - 3 ;c1 points to 3rd character from the end (not counting the last character).c1 holds the address. *c1 means the data strored at c1. Since c1 points to 3rd character from the end (that is 5th character - count starts from 0), *c holds character 'y'
6、. Hence *c1 will print 'y' on the screen.Similarly for other pointer variables *c2, *c3, *c4 and *c53.Question:a=5 b=10 c=7(a>c)?a:(b>c)?b:c)Answer: 104Question : How do you declare an array of N pointers to functions returning pointers to functions returning pointers to characters?A.
7、char *(*(*aN)()();B. Build the declaration up incrementally, using typedefs:C. Use the cdecl program, which turns English into C and vice versa:D. All of the above.Answer : D5Question :void main()int count=10,*temp,sum=0;temp=&count;*temp=20;temp=∑*temp=count;printf("%d %d %d "
8、,count,*temp,sum);Answer : 20; 20; 20;.6Question :void main()int i=7;printf("%d",i+*i+);Answer : 49.Note: Don t change a variable twice in one expression.7Question : The number of syntax errors in the program?int f()void main()f(1);f(1,2);f(1,2,3);f(int i,int j,int k)printf("%d %d %d&
9、quot;,i,j,k);Answer : None.8Question : void main()float j;j=1000*1000;printf("%f",j);A. 1000000B. OverflowC. ErrorD. None of the aboveAnswer :D.9Question : Give the output of the programvoid main()unsigned i=1; /* unsigned char k= -1 => k=255; */signed j=-1; /* char k= -1 => k=65535
10、*/* unsigned or signed int k= -1 =>k=65535 */if(i<j)printf("less");elseif(i>j)printf("greater");elseif(i=j)printf("equal");Answer : less10Give the output of the programvoid main()char *s="12345sn"printf("%d",sizeof(s);Answer : 411Question :
11、Give the output of the programvoid main()int i;for(i=1;i<4,i+)switch(i)case 1: printf("%d",i);break;case 2:printf("%d",i);break;case 3:printf("%d",i);break;.switch(i) case 4:printf("%d",i);Answer : 1,2,3,412.Question : How to pass two arguments to a functio
12、n prompted to by function pointerA. g -> (1,2)B. *g(1,2)C. (*g)(1,2)D. g(1,2)Answer : C13Question: Can you have constant volatile variable?Answer:YES. We can have a const volatile variable.a volatile variable is a variable which can be changed by the extrenal events (like an interrput timers will
13、 increment the voltile varible. If you dont want you volatile varibale to be changed thendeclare them as“ const volatile”.14.Question:study the code:#include<stdio.h>void main()const int a=100;int *p;p=&a;(*p)+;printf("a=%dn(*p)=%dn",a,*p);What is printed?A)100,101B)100,100C)101,
14、101 D)None of the above.Answer CEmbedded C1. Using the #define statement, how would you declare a manifest constant that returns the number of seconds in a year? Disregard leap years in your answer.Answer#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)ULI'm looking for several things here:Basic kno
15、wledge of the #define syntax (for example, no semi-colon at the end, the need to parenthesize, and so on)An understanding that the pre-processor will evaluate constant expressions for you. Thus, it is clearer, and penalty-free, to spell out how you are calculating the number of seconds in a year, ra
16、ther than actually doing the calculation yourselfA realization that the expression will overflow an integer argument on a 16-bit machine-hence the need for the L, telling the compiler to treat the variable as a LongAs a bonus, if you modified the expression with a UL (indicating unsigned long), then
17、 you are off to a great start. And remember, first impressions count!2. Write the "standard" MIN macro-that is, a macro that takes two arguments and returns the smaller of the two arguments.Answer:#define MIN(A,B)(A)<= (B) ? (A) : (B)The purpose of this question is to test the following
18、:Basic knowledge of the #define directive as used in macros. This is important because until the inline operator becomes part of standard C, macros are the only portable way of generating inline code. Inline code is often necessary in embedded systems in order to achieve the required performance lev
19、elKnowledge of the ternary conditional operator. This operator exists in C because it allows the compiler to produce more optimal code than an if-then-else sequence. Given that performance is normally an issue in embedded systems, knowledge and use of this construct is important Understanding of the
20、 need to very carefully parenthesize arguments to macrosI also use this question to start a discussion on the side effects of macros, for example, what happens when you write code such as:.least = MIN(*p+, b);3. Infinite loops often arise in embedded systems. How does you code an infinite loop in C?
21、 There are several solutions to this question. My preferred solution is:Answer:while(1)?5. Using the variable a, give definitions for the following: a) An integerb) A pointer to an integerc) A pointer to a pointer to an integerd) An array of 10 integerse) An array of 10 pointers to integersf) A poin
22、ter to an array of 10 integersg) A pointer to a function that takes an integer as an argument and returns an integerh) An array of ten pointers to functions that take an integer argument and return an integerAnswers :a) int a; / An integerb) int *a; / A pointer to an integerc) int *a; / A pointer to
23、 a pointer to an integerd) int a10; / An array of 10 integerse) int *a10; / An array of 10 pointers to integersf) int (*a)10; / A pointer to an array of 10 integersg) int (*a)(int); / A pointer to a function a that takes an integer argument and returns an integerh) int (*a10)(int); / An array of 10
24、pointers to functions that take an integer argument and return an integerPeople often claim that a couple of these are the sorts of thing that one looks up in textbooks-and I agree. While writing this article, I consulted textbooks to ensure the syntax was correct. However,I expect to be asked this
25、question (or something close to it) when I'm being interviewed. Consequently, I make sure I know the answers, at least for the few hours of the interview. Candidates who don't know all the answers (or at least most of them) are simply unprepared for the interview. If they can't be prepar
26、ed for the interview, what will they be prepared for?.6. What are the uses of the keyword static?Answer:Static has three distinct uses in C:A variable declared static within the body of a function maintains its value between function invocationsA variable declared static within a module, (but outsid
27、e the body of a function) is accessible by all functions within that module. It is not accessible by functions within any other module. That is, it is a localized globalFunctions declared static within a module may only be called by other functions within that module. That is, the scope of the funct
28、ion is localized to the module within which it is declaredMost candidates get the first part correct. A reasonable number get the second part correct, while a pitiful number understand the third answer. This is a serious weakness in a candidate, since he obviously doesn't understand the importan
29、ce and benefits of localizing the scope of both data and code.7. What do the following declarations mean?const int a;int const a;const int *a;int * const a;int const * const a ;AnswerThe first two mean the same thing, namely a is a const (read-only) integer. The third means a is a pointer to a const
30、 integer (that is, the integer isn't modifiable, but the pointer is). The fourth declares a to be a const pointer to an integer (that is, the integer pointed to by a is modifiable, but the pointer is not). The final declaration declares a to be a const pointer to a const integer (that is, neithe
31、r the integer pointed to by a, nor the pointer itself may be modified).8. What does the keyword volatile mean? Give three different examples of its use.Answer:A volatile variable is one that can change unexpectedly. Consequently, the compiler can make no assumptions about the value of the variable.
32、In particular, the optimizer must be careful to reload the variable every time it is used instead of holding a copy in a register. Examples of volatile variables are:.Hardware registers in peripherals (for example, status registers) Non-automatic variables referenced within an interrupt service rout
33、ineVariables shared by multiple tasks in a multi-threaded application9.Can a pointer be volatile ? Explain.Yes, although this is not very common. An example is when an interrupt service routine modifies a pointer to a buffer10.What's wrong with the following function?:int square(volatile int *pt
34、r)return *ptr * *ptr;Answers:This one is wicked. The intent of the code is to return the square of the value pointed to by *ptr . However, since *ptr points to a volatile parameter, the compiler will generate code that looks something like this:int square(volatile int *ptr)int a,b;a = *ptr;b = *ptr;
35、return a * b;Because it's possible for the value of *ptr to change unexpectedly, it is possible for a and b to be different. Consequently, this code could return a number that is not a square! The correct way to code this is:long square(volatile int *ptr)int a;a = *ptr;return a * a;.11. Embedded
36、 systems always require the user to manipulate bits in registers or variables. Given an integer variable a, write two code fragments. The first should set bit 3 of a. The second should clear bit 3 of a. In both cases, the remaining bits should be unmodified.Answer:Use #defines and bit masks. This is
37、 a highly portable method and is the one that should be used.My optimal solution to this problem would be:#define BIT3(0x1<< 3)static int a;void set_bit3(void) a |= BIT3;void clear_bit3(void) a &= BIT3;12Embedded systems are often characterized by requiring the programmer to access a speci
38、fic memory location. On a certain project it is required to set an integer variable at the absolute address 0x67a9 to the value 0xaa55. The compiler is a pure ANSI compiler. Write code to accomplish this task.Answer:int *ptr;ptr = (int *)0x67a9;*ptr = 0xaa55;13. What does the following code output a
39、nd why? void foo(void)unsigned int a = 6;int b = -20;(a+b > 6) ? puts("> 6") :puts("<= 6");The answer is that this outputs "> 6." The reason for this is that expressions involving signed and unsigned types have all operands promoted to unsigned types. Thus ?
40、0 becomes a very large.positive integer and the expression evaluates to greater than 6. This is a very important point in embedded systems where unsigned data types should be used frequently.14.What does the following code fragment output and why?char *ptr;if (ptr = (char *)malloc(0) = NULL)puts(&qu
41、ot;Got a null pointer");elseputs("Got a valid pointer");Answer: Got a valid pointerThis is a fun question. I stumbled across this only recently when a colleague of mine inadvertently passed a value of 0 to malloc and got back a valid pointer! That is, the above code will output "
42、Got a valid pointer." I use this to start a discussion on whether the interviewee thinks this is the correct thing for the library routine to do. Getting the right answer here is not nearly as important as the way you approach the problem and the rationale for your decision.15.Typedef is freque
43、ntly used in C to declare synonyms for pre-existing data types. It is also possibleto use the preprocessor to do something similar. For instance, consider the following code fragment:#define dPSstruct s *typedefstruct s * tPS;The intent in both cases is to define dPS and tPS to be pointers to struct
44、ure s. Which method, if any, is preferred and why?The answer is the typedef is preferred. Consider the declarations:dPS p1,p2;tPS p3,p4;The first expands to:struct s * p1, p2;which defines p1 to be a pointer to the structure and p2 to be an actual structure, which is probably not what you wanted. Th
45、e second example correctly defines p3 and p4 to be pointers.Obscure syntax16. C allows some appalling constructs. Is this construct legal, and if so what does this code do?.int a = 5, b = 7, c;c = a+b;This code is treated as:c = a+ + b;Thus, after this code is executed, a = 6, b = 7, and c = 12.Real-time question1. What is real-time system?"A real-time system is one in which the correctnes
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司轉(zhuǎn)讓股權(quán)合同
- 工地設(shè)備機(jī)械施工合同書
- 2025年寧波從業(yè)資格證應(yīng)用能力考些啥
- 《數(shù)據(jù)可視化技術(shù)應(yīng)用》2.3剖析用戶購(gòu)買行為數(shù)據(jù)-教案
- 簡(jiǎn)單版本的加工承攬合同6篇
- 工作室租房合同7篇
- 《愛心行動(dòng)-圖形與拼組》作業(yè)設(shè)計(jì)方案
- 水力學(xué)模擬考試題與參考答案
- 電工崗位試題庫(kù)及參考答案
- 個(gè)人工作計(jì)劃周工作計(jì)劃
- 重慶市設(shè)計(jì)概算編制規(guī)定
- 壓裂評(píng)價(jià)中常見曲線分析
- (新版)網(wǎng)絡(luò)攻防知識(shí)考試題庫(kù)(含答案)
- 2023年湖北省技能高考文化綜合試題及答案
- 自然辯證法概論課件:第一章馬克思主義自然觀
- 廣東粵教版第3冊(cè)上信息技術(shù)課件第5課神奇的變化-制作形狀補(bǔ)間動(dòng)畫(課件)
- 連鎖藥店運(yùn)營(yíng)管理
- (中職)中職生禮儀實(shí)用教材完整版PPT最全教程課件整套教程電子講義(最新)
- 民航旅客運(yùn)輸完整版ppt-全體教學(xué)教程課件最新
- JJF (石化) 007-2018 鉛筆硬度計(jì)校準(zhǔn)規(guī)范-(高清現(xiàn)行)
- 《中醫(yī)兒科學(xué)》課件生理病因病理特點(diǎn)
評(píng)論
0/150
提交評(píng)論