在考C 的前一天晚上(一天的學習總結)

2021-07-09 12:14:42 字數 1556 閱讀 6521

在今天開始之前,一直以為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程式設計客棧...