*答案在末尾!
站在用戶的角度思考問題,與客戶深入溝通,找到麗水網(wǎng)站設(shè)計與麗水網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋麗水地區(qū)。
1、寫出bool、float、指針變量與“零值”比較的if語句;
2、在linux32位操作系統(tǒng)下,計算sizeof的值;
char str[] = “heoll”;
char* p = str;
int n;
void fun(int arr[])
{}
void* ptr = malloc(168);
sizeof(str);sizeof(p);sizeof(n);sizeof(arr);sizeof(ptr);
3、給出下列的定義
a、一個有10個指針的數(shù)組,該指針的是指向一個整型的;
b、一個指向有10個整型數(shù)組的指針;
c、一個指向函數(shù)的指針,該函數(shù)有一個整數(shù)參數(shù)并返回整型;
d、一個有10個指針的數(shù)組,指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回整型;
4、以下代碼有什么問題?
int main()
{
char a;
char* str = &a;
strcpy(str,“hello”);
printf(str);
return 0;
}
5、以下代碼有什么問題?
str = “aaa”;
printf("%s\n",str);
str[0] = 'A';
printf("%s\n",str);
6、C/C++中的struct有什么不同?
7、以下代碼有什么問題?
void getmetmemory(char *p)
{
p = (char*)malloc(100);
strcpy(p,"hello world");
}
int main()
{
char* str = NULL;
getmemory(str);
printf("%s\n"str);
free(str);
return 0;
}
8、以下代碼會產(chǎn)生什么結(jié)果,為什么?
char str[10];
strcpy(str."0123456789");
9、volatile關(guān)鍵字的作用;
/*************************************************************
答案
/*************************************************************
1、一般規(guī)范的:
bool:if(falg) if(!flag)
float:const float EPS = 0.000001; if((x >= -EPS )&&(x <= EPS))
指針:if(p == NULL) if(p != NULL)
2、6、4、4、4、4;
3、int* a[10]; int(*a)[10]; int (*a)(int); int (*a[10])(int);
4、沒有為str分配內(nèi)存空間,將一個字符串拷貝到一個字符變量指針所指地址??梢猿鲱A(yù)期結(jié)果
但是越界進行讀寫導(dǎo)致程序崩潰。
5、“aaa”是字符串常量,str是指針,指向這個字符串常量,所以聲明str的時候就有問題了。
又const char* str = “aaa”;是常量對str[0]的賦值操作是不合法的。
6、重要區(qū)別是C中struct不可以包含成員函數(shù),而在C++中它就是一個類只是默認是public的罷了。
7、p傳給getmemory函數(shù)的是p的一個副本,在函數(shù)體為p開辟了空間超了函數(shù)體p還給還給操作系統(tǒng)了,
p所指向的內(nèi)存空間沒有釋放導(dǎo)致內(nèi)存泄漏。
8、str越界寫入數(shù)據(jù),會導(dǎo)致段錯誤。
9、一個定義為volatile的變量表示該變量會經(jīng)常被改變。多用于下面三個地方
(1)、中斷服務(wù)程序中修改的供其它程序檢測的變量需要加volatile;
(2)、多任務(wù)環(huán)境下各任務(wù)間共享的標志應(yīng)該加volatile;
(3)、存儲器映射的硬件寄存器通常也要加volatile說明,因為每次對它的讀寫都可能由不同意義;