70道C語言與C 常見問答題
時間:2021-09-23 15:28:00
手機看文章
掃描二維碼
隨時隨地手機看文章
[導讀]1變量的聲明和定義有什么區(qū)別變量的定義為變量分配地址和存儲空間,變量的聲明不分配地址。一個變量可以在多個地方聲明,但是只在一個地方定義。加入extern修飾的是變量的聲明,說明此變量將在文件以外或在文件后面部分定義。說明:很多時候一個變量,只是聲明不分配內存空間,直到具體使用時才...
1 變量的聲明和定義有什么區(qū)別
變量的定義為變量分配地址和存儲空間, 變量的聲明不分配地址。一個變量可以在多個地方聲明, 但是只在一個地方定義。加入extern 修飾的是變量的聲明,說明此變量將在文件以外或在文件后面部分定義。說明:很多時候一個變量,只是聲明不分配內存空間,直到具體使用時才初始化,分配內存空間, 如外部變量。int?main()?
{
???extern?int?A;
???//這是個聲明而不是定義,聲明A是一個已經定義了的外部變量
???//注意:聲明外部變量時可以把變量類型去掉如:extern A;
???dosth();?//執(zhí)行函數(shù)
}
int?A;?//是定義,定義了A為整型的外部變量
2 簡述#ifdef、#else、#endif和#ifndef的作用
利用#ifdef、#endif將某程序功能模塊包括進去,以向特定用戶提供該功能。在不需要時用戶可輕易將其屏蔽。#ifdef?MATH
#include?"math.c"
#endif
在子程序前加上標記,以便于追蹤和調試。#ifdef?DEBUG
printf?("Indebugging......!");
#endif
應對硬件的限制。由于一些具體應用環(huán)境的硬件不一樣,限于條件,本地缺乏這種設備,只能繞過硬件,直接寫出預期結果。「注意」:雖然不用條件編譯命令而直接用if語句也能達到要求,但那樣做目標程序長(因為所有語句都編譯),運行時間長(因為在程序運行時間對if語句進行測試)。而采用條件編譯,可以減少被編譯的語句,從而減少目標程序的長度,減少運行時間。3 寫出int 、bool、 float 、指針變量與 “零值”比較的if 語句
//int與零值比較?
if?(?n?==?0?)
if?(?n?!=?0?)
?
//bool與零值比較?
if???(flag)?//???表示flag為真?
if???(!flag)?//???表示flag為假?
?
//float與零值比較?
const?float?EPSINON?=?0.00001;
if?((x >=?- EPSINON)?