本系列主要講的是 C 語言的一些深入的知識,故在開始之前大家可以先完成這個小測試,如果你對下面的題目感覺毫無壓力,那么你對于 C 語言基礎(chǔ)的掌握已經(jīng)比較牢固了。
- 下面代碼的輸出是什么?
#include <stdio.h>
int main(void)
{
int a[3][2] = { (0,1), (2,3), (4,5) } ;
int *p ;
p = a[0] ;
printf(“%d”, p[0]) ;
}
- int a[10]; 問下面哪些不可以表示 a[1] 的地址?
A. a+sizeof(int)
B. &a[0]+1
C. (int*)&a+1
D. (int*)((char*)&a+sizeof(int))
- 下面的C程序是合法的嗎?如果是,那么輸出是什么?
#include <stdio.h>
int main()
{
int a=3, b = 5;
printf(&a["Ya!Hello! %s\n"], &b["junk/super"]);
printf(&a["WHAT%c%c%c %c%c %c !\n"], 1["this"],
2["beauty"],0["tool"],0["is"],3["sensitive"],
4["CCCCCC"]);
return 0;
}
- 32 位機上根據(jù)下面的代碼,問哪些說法是正確的?(多選題類型)
signed char a = 0xe0;
unsigned int b = a;
unsigned char c = a;
A. a>0 && c>0 為真
B. a == c 為真
C. b 的十六進(jìn)制表示是:0xffffffe0
D. 上面都不對
- 下面程序的輸出結(jié)果(32位小端機)
#include <stdio.h>
int main()
{
long long a = 1, b = 2, c = 3;
printf("%d %d %d\n", a, b, c);
return 0;
}
- 請問下面的程序的輸出值是什么?
#include <stdio.h>
#include <stdlib.h>
#define SIZEOF(arr) (sizeof(arr)/sizeof(arr[0]))
#define PrintInt(expr) printf("%s:%d\n",#expr,(expr))
int main()
{
int pot[] = {
0001,
0010,
0100,
1000
};
int i;
for(i=0;i<SIZEOF(pot);i++)
PrintInt(pot[i]);
return 0;
}
- 請問下面的程序的輸出值是什么?
#include <stdio.h>
int main(void)
{
char a[1000] ;
int i ;
for(i=0; i<1000; i++)
{
a[i]= -1-i ;
}
printf(“%d”,strlen(a)) ;
return 0 ;
}
- 下面這段代碼會掛么?會掛在哪一行?
#include <stdio.h>
struct str{
int len;
char s[0];
};
struct foo {
struct str *a;
};
int main(int argc, char** argv) {
struct foo f = {0};
if (f.a->s) {
printf( f.a->s);
}
return 0;
}
- 在X86系統(tǒng)下,輸出的值為多少?
#include <stdio.h>
int main(void)
{
int a[5] = {1,2,3,4,5} ;
int *ptr1 = (int *)(&a+1) ;
int *ptr2 = (int *)((int)a+1) ;
printf(“%x,%x”,ptr1[-1], *ptr2) ;
return 0 ;
}
- 請問下面的程序的輸出值是什么?
#include <stdio.h>
int main()
{
int a[5][5] ;
int (*p)[4] ;
p = a ;
printf("%d", &p[4][2]-&a[4][2]) ;
return 0 ;
}
- 以下代碼在 windows 系統(tǒng)下成員 i 的偏移量是多少?在 Linux 系統(tǒng)下 i 的偏移量是多少?
struct S
{
char c ;
int i[2];
double v ;
} ;
- 下面代碼中有BUG,請找出
int tadd_ok(int x, int y) //判斷加法溢出
{
int sum = x+y ;
return (sum-x == y) && (sum-y == x) ;
}
int tsub_ok(int x, int y) //判斷減法溢出
{
return tadd_ok(x, -y) ;
}
- 下面變量的核心是什么,并用多個typedef改寫下面的聲明式
int *(*(*(*abc) ( ) ) [6]) ( ) ;
- (*(void(*)( ))0 )( ) 這是什么?
- 編寫一些代碼,確定一個變量是有符號數(shù)還是無符號數(shù)
更多建議: