国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

關(guān)于C++的小細(xì)節(jié)

2019-11-06 07:00:33
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C++里面,char a[100]=”hello”和char * p=”hello”的區(qū)別?

char a[100]在棧上分配了數(shù)組的空間,可讀,可寫 char *p = “hello”,字符串的空間在常量區(qū)分配,只讀 嚴(yán)謹(jǐn)?shù)膶懛☉?yīng)該是 const char *p = “hello”; c/c++為了兼容歷史代碼,才允許寫成char *p=“hello”,但一旦試圖寫入這個(gè)空間,操作系統(tǒng)(DOS不算啊)會(huì)捕捉到這個(gè)錯(cuò)誤的

二者在內(nèi)存中的位置肯定是不同的,前者是字符型數(shù)組,是將字符串放到了這個(gè)數(shù)組中,分配在內(nèi)存的棧區(qū)域,而后者則是將字符型指針指向此字符串,是將字符串的首地址賦給了指針p,但是字符串是在內(nèi)存的程序區(qū),這是二者的區(qū)別,從訪問(wèn)機(jī)制上來(lái)說(shuō),數(shù)組用下標(biāo)運(yùn)算符“[ ]”進(jìn)行值訪問(wèn),例如a[0]值為h,a[1]值為e;指針則是需要用反向引用運(yùn)算符進(jìn)行值訪問(wèn)“”例如:*p值為h (p+1)值為e。

區(qū)別之一: a[100] =”hello”; 分配100個(gè)字節(jié)內(nèi)存,而char *p = ”hello” 只分配6個(gè)字節(jié)內(nèi)存 區(qū)別之二: 前者所存的內(nèi)容可以改變(例如a[3]=’A’; OK),而后者則不可以(例如p[3]=’A’; Error)。

面試編程題 1、計(jì)算兩個(gè)日期之間相隔的天數(shù) 閏年:公元年數(shù)可被4整除(但不可被100整除)為閏年,但是正百的年數(shù)必須是可以被400整除的才是閏年,其他都是平年

void IsLeap(int year){ return( year % 4 == 0 || year % 400 == 0) && (year % 100 !=0);}

計(jì)算兩個(gè)年月日之間的總天數(shù),思路是分別算出日期的總天數(shù),然后相減。

typedef struct { int iYear; int iMonth; int iDay;}Date;//IsLeap函數(shù)判斷一個(gè)年份是否為閏年,方法如下:bool IsLeap(int year){ return (year % 4 ==0 || year % 400 ==0) && (year % 100 !=0);}//DayInYear能根據(jù)給定的日期,求出它在該年的第幾天,代碼如下int DayInYear(Date* pDate){ int iRet = 0; int DAY[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(IsLeap(pDate->iYear)) DAY[1] = 29; for(int i=0; i < pDate->iMonth - 1; ++i) { iRet += DAY[i]; } return iRet;}int DaysBetween2Date(Date* pDate1, Date* pDate2){ //取出日期中的年月日 Date *pTmp; if(pDate1->iYear == pDate2->iYear && pDate1->iMonth == pDate2->iMonth) { return abs(pDate1->iDay - pDate2->iDay); } else if(pDate1->iYear == pDate2->iYear) //如果年相同 { return abs(DayInYear(pDate1) - DayInYear(pDate2)); } else //年月都不相同 { int d1,d2,d3; //確保pDate1->year1年份比pDate2->year2早 if(pDate1->iYear > pDate2->iYear) { pTmp = pDate1; pDate1 = pDate2; pDate1 = pTmp; } if(IsLeap(pDate1->iYear)) d1 = 366 - DayInYear(pDate1); //取得這個(gè)日期在該年還于下多少天 else d1 = 365 - DayInYear(pDate1); d2 = DayInYear(pDate2); //取得在當(dāng)年中的第幾天 d3 = 0; for(int year = pDate1->iYear + 1; year < pDate2->iYear; year++) { if(IsLeap(year)) d3 += 366; else d3 += 365; } return d1 + d2 + d3; }}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黄梅县| 克东县| 新沂市| 元谋县| 宁南县| 泰顺县| 莫力| 丹江口市| 麻栗坡县| 伽师县| 呼和浩特市| 于都县| 东辽县| 循化| 黔西县| 广西| 镇远县| 宁远县| 大丰市| 尉犁县| 五常市| 达孜县| 西和县| 郸城县| 余庆县| 黄平县| 班玛县| 锦屏县| 枣阳市| 南雄市| 明溪县| 永丰县| 临潭县| 绥滨县| 晴隆县| 安达市| 崇左市| 东城区| 桐城市| 宜城市| 昌乐县|