在今天開始之前,一直以為c++有什麼鬼好複習的,然後看了下班群好像別人都在複習得很認真的樣子。然後我就看了一下習題。挖槽,好多不會- -!現在開始:
一.指標陣列和陣列指標。
指標陣列:
array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標
定義char *p[10];
陣列指標:a pointer to an array,即指向陣列的指標
定義char (*p)[10];
區別:比如說上面那2個,指標陣列定義了就分配了10個指標的記憶體空間。陣列指標定義了之分配乙個記憶體的記憶體空間。
注意:那麼這個東西有什麼用呢?
比如如果有int array[3][4];
然後你定義乙個int **pointer =a;編譯器肯定是會報錯的!
所以你要定義int (*pointer)[4]=a;就可以啦。
為什麼會這樣說起來就很複雜了,這裡面涉及到指標怎麼讀所指物件的和物件在記憶體中的表示。(是吧
二.轉義字元
前面帶 '\' 的字元。
八進位制表示:\ddd 3位八進位制表示字元ascii碼。
十六進製制表示:\xhh x後面接2位十六進製制來表示字元ascii碼。
三.strcpy函式
拷貝字串,然後在字串後面加'\0';
本來也被什麼好說的,但是它的鬼考題居然這樣出:
char str1="how are you";
char str2[11],*p;
strcpy(p=str2,str1);
這個選項是正確的,但是str2明明只分配了11個空間,最後乙個'\0'字元無法加上去的啊!
最後經過種種分析,各種實驗,我得出了乙個結論:
所謂分配空間,就是char str[11];這種。應該是告訴記憶體,給我乙個正常的位址,然後這個位址後的11個單位,如果不是程式設計師自己去改,裡面的東西就不會變。strcmp函式可不知道這些,他就直接在str+11這個位址裡面的值補0了。
但是,程式在變化的時候,記憶體裡的東西是會一直變的,就是說,str+11的0非常有可能會被覆蓋。
所以在自己程式設計的時候,千萬不要犯這種錯誤!
四.共用體
這個鬼東西課堂上講都沒講。(或許是我沒聽?)
就是所有成員共用乙個位址,只有乙個成員有效。共用體大小取決於最大成員的大小。
然後他粗題這樣粗- -!
union a
a.i=266;
問ch的值為多少?
然後我想了好久.......
266二進位制表示為100001010
整形數的表示在32位上計算機上4個位元組,忽略前面若干個0。然後char 只有乙個位元組,乙個位元組8位。所以只是讀後面那8位,得出來是00001010,轉化為十進位制也就是10。
答對了啦啦啦!
五.總結
學得還太少,很多記憶體方面的深入知識沒有掌握,而指標是操作記憶體很好的手段,因此導致指標也學得不太好。指標學得不太好c就學不好了- -!
php 前一天或後一天的日期
date default timezone set prc 預設時區 echo 今天 date y m d time echo 今天 date y m d strtotime 18 june 2008 echo 昨天 date y m d strtotime 1 day echo 明天 date y...
php 前一天或後一天的日期
php 判斷今天的前一天,或前後多少天的 date default timezone set prc 預設時區 echo 今天 date y m d time echo 今天 date y m d strtotime 18 june 2008 echo 昨天 date y m d strtotime...
php 前一天或後一天的日期
複製 如下 php date default timezone set prc 預設時區 echo 今天 date y m d time 程式設計客棧 echo 今天 date y m程式設計客棧 d strtotime 18 june 2008 echo 昨天 date y m d s程式設計客棧...