10.29 面試總結
1.請問執行main函式有什麼樣的結果?
#include <stdio.h>
#include <stdlib.h>
char* getmemmory(void)
{
char p[]=“hello world”;
return p;
}
int main(int argc, char *argv[]) {
char * str=NULL;
str=getmemmory();
printf("%s",str);
return 0;
}
9 2 C:\Users\asus\Desktop\test\main.c [Warning] function returns address of local variable [-Wreturn-local-addr]
2.下面是32位的c程式,請計算結果。
int a[100];
sizeof(a)=___;
char array[20]=“hello world”;
sizeof(array)=;
strlen(array)=;
char p=(char)malloc(sizeof(char)*100);
sizeof§=__;
3.寫出如下程式的執行結果
int main(int argc, char *argv[]) {
char *p1=“hello world”;
char p2;
p2=(char)malloc(20);
memset(p2,0,20); printf("%s\n",p2); while(*p2++ = *p1++); printf("%s\n",p2); return 0;
}
4.計算結果
int main(int argc, char *argv[]) {
int a,b,c,d;
a=10;
b=a++;//a=11,b=10;
c=++a;//c=12,a=12;
d=10*a+++b;//d=10*12+10=130;a=13,b=10;
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
return 0;
}
結果:a=13,b=10,c=12,d=130;
5.const關鍵字的作用,如何理解
int main(int argc, char *argv[]) {
const int a=3;
printf("%d",a);
a=4;
printf("%d",a);
return 0;
}
以上程式碼編譯時報錯
int main(int argc, char *argv[]) {
const int a=3;
int *p =(int *)&a;
printf("%d\n",a);
*p=4;
printf("%d\n",a);
return 0;
}
結果:
3
4
const是隻讀的變數,編譯時檢查,只是告訴編譯器是隻讀變數,該變數在記憶體中還是佔用空間的,通過讀寫記憶體的方式還是可以修改它的值的。