>> [音楽再生]
CAMILLE REKHSON：こんにちは、誰もが。
CS50クイズへようこそ ゼロレビューセッション。
私はカミーユです。
そして、私は行くことするつもりです あなたといくつかのトピックを超えます
みんな、今日はあなたを助けるために クイズの準備をします。
だからここに私たちの非網羅的です トピックのリストあなた
クイズのために精通している必要があります。
これらは、直接撮影されました シラバスから。
私はそれはたくさんのように思える知っています。
しかし私を信頼し、あなたはすべてのことを学びました 過去数週間でこれらの事。
>> だから我々は間違いなく行くことがあります これらの今日の多くの上に。
しかし、また、あなたにいくつかの時間がかかります これらの事を確認する独自の。
そして、あなたが精通していなかった場合 これらの事のいくつかは何ですか、
あなたが私たちのいずれかを尋ねることを確認してください。
また、公式の単語の クイズには、このリンクにアクセスしてください。
これは、すべての情報を持っています どの部屋であなたが行く必要があり、
アルファベット順に分割し、 どんな材料にもいくつかのヒント
あなたは勉強して、どのようなする必要があります あなたが期待できるクイズの質問。
だからをチェックアウトしてください。
>> あなたのためにも、いくつかのヒント 試験の準備をしています。
紙の上でのコーディングの練習。
私はあなたが持っていることに慣れてきた知っています あなたのためのあなたのエラーのためのIDEのチェック、
そして、it's--あなたはそれを入力しているとき、 それが持つよりも少し違います
物事を書き込みます。
だから、いくつかのコーディングをして練習します。
練習にいくつかの良い機能 やってはSTRLENと税引後営業利益は、
あなたが書くことができれば見て 自分でそれらのうち。
問題セットに精通していること。
ほとんどの年があります 関連する質問
問題セット材料の一部に。
だから、あなたが理解していることを確認してください すべての問題のセットを行う方法。
>> 古いクイズの一部をやってみてください 75分の時間の制約の下で。
クイズの多く 種類の長さにすることができます。
だから、与えるために良い方法です 自分でいくつかの練習、
そしてどのくらいの時間がします あなたを取るし、どのように
確認するためにあなたの時間を分割する必要があります あなたは、年末までにすべてを終えます。
そしてまた、1つのページを取得し、 両面参照シート
あなたは何でもあなたを書くことができること クイズ中に使用するにしたいです。
だから、あなたが作成しているとき すなわち、それはまたです
ので、勉強には本当に素晴らしい方法 あなたはこの種のものを見直すことになります
あなたはそれを書いているよう。
>> だからに関する一般的な質問は、 クイズ、またはそれがどのように動作しますか？
うん。
>> 聴衆：トピックのリストは、ウィル あなただけの私たちに利用可能であることを示しました
オンライン？
>> CAMILLE REKHSON：この全体のスライド ショーはウェブサイトに掲載されます。
また、今日のレビューの動画 セッションは、ウェブサイト上になります。
だから、についてはあまり心配しないでください 全体のことを書き留めます。
これは、すべてがあります。
その他の質問は？
[OK]を、ので、始めましょう。
>> だから、一つのことがあるに精通しています 異なるデータタイプおよびサイズ
彼らが取ること。
これもに大きなものになるかもしれませんね あなたの参照シートに書き留め、
ただあなたを確認します これらのすべてを覚えています。
But--ので、文字は1バイトです。
int型は4バイトです。
基本的にはより多くのである、長い、長いです 整数のためのスペースは、8バイトです。
フロートは4バイトです。
基本的にはあなたを与える二重、 浮動小数点数を格納するためのより多くのスペースは、8バイトです。
そして、ポインタはまた、8バイトです。
これらについてのご質問？
>> だからバイナリは、私たちがきた別のトピックです 少しにこの学期をカバーしました。
それでは、いくつかをやらせます 変換との練習
バイナリと小数の間。
だから、誰がどんな考えを持っているもの その最初のものはでしょうか？
誰でも？
ええ、それは42です。
あなたは覚えているのであれば、各 バイナリでの場所の
基本的には2のようなものです その場所の電源に。
>> だから、最初のスポットは0パワーに2です。
そして、私たちはそこに0を持っていないので、そこには何も。
次の場所は、最初の電源に2です。
そして、私たちはそこに1を持っています、 そのためには、基本的には2です。
次の場所は2であることが 4第二、。
私たちはそこには何もありません。
以上の次の場所は2であります 8だろう第三、。
そして、我々はそこに1を持っています。
そして、我々は続けます。
それはへの遠いをlast-- 我々は、32を持っている場合に左ものです。
だから、私たちは基本的に持っています 42を取得するための32プラス8プラス2。
質問は？
>> 聴衆：の添え字は何ですか？
>> CAMILLE REKHSON：添字 基本的にはバイナリです教えてくれる。
だから、2があります。
次の中like--があった場合 1、または我々は小数に変換しています
バイナリに、10のことを私たちに示してあります この数は、もともと小数です。
>> 観客は：ありがとうございます。
>> CAMILLE REKHSON：うん。
その1上の任意の他の質問？
OK、それでは、次を試してみましょう 1その後、バイナリの10進。
だから50を取り、バイナリにそれを置きます。
あなたはそれをどうしますか？
うん。
>> 聴衆：110010。
>> CAMILLE REKHSON：はい。
考えるための簡単​​な方法選ぶ - だから、 バイナリに10進数からの変換
それは多くの場合、書き出すのに役立ちますto--です 2の異なる力がありますか。
そして、それを通過して、参照してください。 何でもそれらの最も高い1
あなたがに置くことができるということです その上に行くことなく、10進数を指定します。
>> の一つが、この場合はそう 2の累乗は32です。
だから、32は50になります。
しかし、次のパワーアップは、64になります これは明らかに50に適合しません。
だから私たちが持っている最高は32​​です。
16まで次のもの。
そして、32プラス16は、唯一の48です。
まだ50に収まるようにします。
だから我々は、これらの両方に1のを持っています。
そして、我々は、ダウンし続ける場合 私たちは左を必要とする唯一のもの
48から50に取得する2以上です。
それでは、私たちはその位置に1を持っています、 そして、最後の位置で0。
何もにありませんので 0番目の場所に2。
変換に関する質問 バイナリ10進？
>> だから今のは、やってみましょう いくつかの2進加算。
どのようにこれら二つのアップを追加すると？
うん。
>> 聴衆：11100。
>> CAMILLE REKHSON：はい。
だから、バイナリの加算を行うことはかなりあります 小数でそれをやってとほとんど同じ。
あなたは、2つの1の幸福を持っている場合を除き、 一緒に加え、1プラス1は、2であります
しかし、バイナリで2 1 0です。
だから、1を運ぶために持っている、と続けます これらのカップルの列のためにそれを運びます。
そして、それ以外の、普通に追加します。
その上の任意の質問？
うん。
>> 聴衆：申し訳ありませんが、最後の場所は何ですか？
6つの数字があります。
だから一番左の列、 それはどのような値ですか？
CAMILLE REKHSON：このボトム1オン？
対象：一番上のもので、50のために。
CAMILLE REKHSON：50のために？
ああ、そう左端の1は32です。
>> 聴衆：32？
>> CAMILLE REKHSON：ええ、それはそうだろう その後、32、16、8、4、2、0--または1です。
まあ、それは1である2ゼロ次、です。
うん。
この上の任意の他の質問？
[OK]を、ので、我々はやろうとしています 進と少し。
だから、これは可能性があります あまり知ら少し、
私が知っているので、我々が行ってきました より多くのバイナリを持ちます。
しかし、本当に良い方法へ 進を考えます
バイナリを分割することです 4ビットのチャンクに数。
の各4ビットので、 進数は基本的にあり
16進数の1。
>> だから我々は、この最初のものを持っている場合、 私たちは基本的に8 1のを持っています。
だから、それらはup--分割することができます
>> 聴衆：255。
>> CAMILLE REKHSON：再びそれを言います。
AUDIENCE 10進で255、 または16進数で0xFFの。
CAMILLE REKHSON：ええ、そうです。
だから、あなたはそれを分割する場合 2つの4ビットのチャンクに、
私たちは基本的に1の4セットを持っています。
どのmaximum--です 基本的には最大
我々はバイナリの4ビットで取得することができます。
我々が得ることができると最高 16進数で、それはF.になります
だから我々は2つ​​のFのだろう。
その上の任意の質問？
うん？
>> 観客は：あなたはそれを繰り返すことができます。
CAMILLE REKHSON：確かに。
そうそれぞれ、基本的には、 16進数の場所です
バイナリーの4ビットに相当します。
だから、これを行う最も簡単な方法です 4ビットのチャンクにそれを破壊します。
したがって、この場合には、我々は、8つの1のを持っています。
だから我々はそれらを分割する場合 2つの4ビットのチャンクに、
我々は、4つの1の二組を有するであろう。
そして、それらの各1 Fに相当します
あなたはabout--と思うなら 私たちの脳は知っています
種類の考えることを有線 小数を通じより、
それは我々が慣れているものだからです。
あなたはと考えることができるように一つの方法 4 1のは、十進数で15に等しいです。
それはだように16進数で15はFです。 別の方法は、あなたはそれを考えることができます。
うん。
>> 聴衆のための：0xのは何ですか？
>> CAMILLE REKHSONた：0x それは16進数だことを意味します。
だから我々はちょうどそれを置きます 通常、そこに付けます。
その上の他の質問。
OK、それでは、行く試してみましょう その後、他の方法。
このケースでは、残念have--？
聴衆：[聞こえません]。
CAMILLE REKHSON：私たちは、バイナリになるだろう。
だから、他の道を行きます。
この場合には、我々は5を持っていると A.私たちはこれについて考えるのであれば、
those-- 5およびAのそれぞれがある場合 両方の4ビットのチャンクを表現しようと、
どのようにバイナリで5を言うでしょうか？
>> 聴衆：0101。
>> CAMILLE REKHSON：うん、 そのためには、0101部分です。
そして、どのようにin--を言います
>> 聴衆：10。
CAMILLE REKHSON：申し訳ありませんit--を言いますか？
聴衆：10。
CAMILLE REKHSON：うん、そう それはそれの第二部です。
そして、あなたが置く場合 それらの2一緒に、それはです
あなたは完全に取得する方法 進のバイナリ。
うん？
>> 観客は：Aがあることを知るために 1010年、あなたはそれを暗記しなければなりませんか？
それとも、like--ことができます
>> CAMILLE REKHSON：もしそうであれば そうyou-- differe--
あなたが通過しているとき 基本的には、バイナリ、バイナリ
0〜9、その後持っています その16の事などからFまで。
もし9--のすべての方法の場合は0だから、 you-- 9、次にA、基本的に
我々は、A 10進数にそれを変換した場合 10のようになる、Bは11のようになります。
そして、あなたが考えてみれば バイナリ1010は、8と2であります
それらは2つですので、 10まで追加の場所、どの
Aは同等です正確に何です。
だから、簡単のようなものです それについて考えるための方法。
進上のその他の質問。
>> [OK]を、今、私たちは取るつもりです ビット演算子を見て。
したがって、これらは間違いなくすることができます クイズに出てきます。
私たちは持っていない知っています 彼らと多くのことを働きました。
しかし、我々はちょうどやろうとしています これらの少し見直し。
だから、うまくいけば、これらは次のようになります 少しより多くのあなたにはおなじみ。
だから、6ビット演算子 私たちはここにリストされていること。
そして、彼らは私たちを操作できます 個々のビット。
だからAND演算子 単一のアンパサンドです。
とそれを混同しないでください 二重アンパサンド、
これは論理的であり、その 私たちは二つのことを比較することができます。
>> シングルとは、どのように我々はできることです ビット単位のものを操作します。
だから、これは私たちに、両方の場合は1の結果を与えます 我々が比較している引数の
same--又は1です。
そして、垂直バー、ORは、与えます 米国1それらの少なくとも一方が1である場合。
したがって、基本的に、正確に 何の言葉が意味しています。
AND、2ビットである場合 1、1、1は私たちに1を与えます。
しかし、ORで、それはだ場合は0または 1、または1または1のいずれかの場合において、
我々はそれらの一つであるとして1を持っています。
それでは、私たちは1になるだろう。
観客：どういう意味ですか それは1を与えると言うこと？
>> CAMILLE REKHSON： 結果。種類の、あなたのような
あなたは0と1、行った場合would-- その結果は、1--または0になります
1の結果に それは申し訳ありませんが、0になります。
ええ、それはのようなものでした 式の結果。
そして、このキャレット記号 XOR、または排他的論理和です。
だから、もっぱら1または正確に意味します 2つの引数のうち一つは1に等しいです。
そして、それはあなたに1を与えるだろう。
>> 少し波線 NOT演算子はあります。
だから、それらの残りの部分とは異なり、 どのビットのペアで動作し、
NOT演算子のみがかかります 1ビット、およびそれを反転します。
だから、あなたが行う場合は、give--場合 0ではない、それはあなたに1を与えるだろう。
そして、あなたは1がない場合は、 それはあなたに0を与えるだろう。
うん？
>> 観客：違いは何ですか 1行との間、または
OR 2と？
CAMILLE REKHSON：だからORで 2行は論理和です。
だから、比較のためです 2つの完全な整数、またはtwo--
物事が等しいかどうかを確認します。
または、これを行うように、これに等しく、 または、これは、このタイプのものに等しいです。
1つのバーOR一方、 物事のビット単位を行うためです。
うん。
>> 観客：あなたがビット単位とはどういう意味ですか？
>> CAMILLE REKHSON：だからビット単位が機能しています 直接バイナリのビットを持ちます。
>> 聴衆：ああ、私は参照してください。
>> CAMILLE REKHSON：うん、そう 0と1での作業。
我々は、このの2つの例をやります 後に、ちょうどので、それはあまりにも混乱はありません。
そして最後の二つがあります 左シフトと右シフト。
基本的には以上2未満であります 標識や看板よりも大きい2。
そして、彼らはビットにシフト 場所の指定された数
あなたは方向にそれを与えること。
だから、どちらかそれをシフトします 左、または右に。
うん？
聴衆：実行するための構文は何ですか？
>> CAMILLE REKHSON：我々はするつもりです 第二の例を通過します。
だからうまくいけば、それが役立ちます。
ちょうど上の任意の質問 [OK]をbefore--、ここまでです。
だから、いくつかの例を通過します。
のは、どれを見てみましょう。
我々は0と1をした場合、我々は何を得るのでしょうか？
>> 聴衆：0。
CAMILLE REKHSON：OK、 私たちは1と1をした場合はどうなりますか？
対象：1。
CAMILLE REKHSON：うん、 私たちは0または1をした場合はどうなりますか？
対象：1。
CAMILLE REKHSON：どのように約1 OR 1？
対象：1。
CAMILLE REKHSON：[OK]を、どのように約0 XOR 1？
対象：1。
CAMILLE REKHSON：そして1 XOR 1？
聴衆：0。
CAMILLE REKHSON：君たちは良いです。
どのように0ではないでしょうか？
>> 対象：1。
CAMILLE REKHSON：AND NOT 1？
聴衆：0。
CAMILLE REKHSON：[OK]をクリックし、この最後の 1はシフトと少し一つです。
だから我々は、最初は8であることがXを設定した場合、および 次に、yはxは3左にシフトされ、
それは、私たちに何を与えるだろうか？
>> 聴衆：[聞こえません]。
CAMILLE REKHSON：再びそれを言います。
聴衆：[聞こえません]。
CAMILLE REKHSON：だから、この 実際に私たちに64を与えます。
聴衆：[聞こえません]。
CAMILLE REKHSON：だから私はちょうどよ ここでこれを書くつもり、
これは意味の少しになります。
我々は0〜1、2に2を持っている場合は、 2 2に、3から2には8になるだろう。
そして、我々はそれをさらに3ビットをシフトしたい場合は 左側に、それは、2〜4であろう
2〜5、および2 6へ6、及び図2は、64です。
それは理にかなっていますか？
はい。
>> 観客：それはすべて1をシフトしてい と進数の0のはthe--します
>> CAMILLE REKHSON：はい。
そして、あなたは上で心配する必要はありません これらは負であることについてのクイズ。
私たちは、あなたが対処することはありません どのような方法で負にシフトします。
これについては他の質問？
はい。
>> 観客：それは右にシフトしていた場合は、 その何かをwasn't--ものです
もともと事0の一部ではありませんでしたか？
>> CAMILLE REKHSON：ええ、あなたが希望 ちょうど元でに0を追加します。
うん。
>> 聴衆：だから100は何でしょう 3回右にシフト？
CAMILLE REKHSON：100 右にシフトし、
そのためには、すべてを取るだろう 1と0のとちょうどそれらをシフト
何度でも右に あなたは右にシフトします。
>> 聴衆：[聞こえませんか]？
CAMILLE REKHSON：まあ、100--あります あなたは、バイナリでは約100の話
または小数で100？
聴衆：私は申し訳ありませんが、バイナリで100。
>> CAMILLE REKHSON：バイナリで100、 あなたはright--にシフトした場合
あなたが右にシフトした場合 一度、それは10となります。
あなたが右にシフトした場合 二回、それは001となります。
そして、あなたは再びそれをシフトすると、 あなたが種類のビットを失います。
うん、それはただ0です。
この上の任意の他の質問？
はい。
>> 観客は：だから、それは000になります。
>> CAMILLE REKHSON：はい。
OK、それでは見ていきましょう アスキー数学の少し。
だから、文字は基本的にすることができます 整数として扱われます
そのASCII値に基づいて。
我々はint型が座っていたのであればAが65に等しく、Bはint型 プラス1は、int型のchar型のCに等しい等しいです
Dマイナス1、チャーDが68に等しく、 一番下に何をプリントアウトでしょうか？
>> そこで、印刷しています 私たちがしているyou--祝福these--
これらのすべてを印刷 パーセントCに基づいて、文字
だから我々は、基本的には、プリントアウトしています すべての4つの文字値
これらの変数。
ヒントとして、65がASCII値であります 資本Aのたぶんそれが助けました。
何？
>> 聴衆：ABCD。
>> CAMILLE REKHSON：うん、そう これは正確にプリントアウトになります
ABCD我々はINT Aを設定しているため A.のASCII値に等しいです
だから我々は、としてそれをプリントアウトした場合 文字、私たちは、大文字のAを取得します
プラス1は、ASCIIの資本Bになります。
Dマイナス1は、ASCIIの資本Cとなります。
そして68は、ASCII値であります ASCIIのD.質問の？
はい。
>> 聴衆：だから、二重引用符は周りマーク 、その変更AはASCIIにしますか？
>> CAMILLE REKHSON：それはそれをuses-- Aを中心count--単一引用符
それ文字になります。
そして、あなたが扱っている場合 それ数のform--
そのようにすると、この場合には、それはのような int--として取り扱われています
それに対処することになります それにASCII値です。
はい。
>> 観客は：あなたがすることをお勧めしますか 我々は、ASCII参照表がありますか？
>> CAMILLE REKHSON：私はthink--ません
>> 聴衆：またはそれだけだろう これらに対処しますか？
>> CAMILLE REKHSON：私は、私たちを考えます 簡単な事でそれを行うだろう。
私はそれはないと思います 多分書き留めて傷つけます
まさに大文字のAと小文字Aであり、 何これらの範囲で始まるされています。
しかし、私はあなたがすべてを取る必要はないと思います 全体のASCIIテーブルを置くためのスペース。
うん。
>> 観客：違いは何ですか 言ってint型のA及びチャーCとの間、
あなたのような上部のですか？
>> CAMILLE REKHSON：だからそれだけです どのようにメモリに格納されています。
しかし、あなたはそれのいずれかの方法で扱うことができます。
私たちはここを参照してくださいように、私たちは、印刷を行います 文字としてのAアウト。
聴衆：だから、同じですか？
CAMILLE REKHSON：うん。
その他の質問は？
>> 聴衆：だから、パーセントC 文字を印刷すると言っていますか？
>> CAMILLE REKHSON：はい。
>> 観客：Aは唯一持っている場合でも、それで 整数として定義され、
我々は、印刷しようとした場合 65のようなチャーは、それがwould--
CAMILLE REKHSON：それはに行くだろう 基本的には、ASCIIチャートに行きます
そして、どのような文字を取得します その65のASCIIチャートインチ
>> 観客は：ありがとうございます。
>> CAMILLE REKHSON：うん。
はい？
>> 聴衆：だからあなたは％の私は、％Iをした場合、 ％私は、％I、それだけでprint--だろう
CAMILLE REKHSON：うん、 あなたが行った場合、すべての4％の私の、それ
ASCIIをプリントアウトするだろう これらのすべての4つの値。
その他の質問は？
[OK]を、ので、スコープ、基本的にはこの 私たちはどこで判断するのに役立ちます
変数は、プログラム内に存在します。
だから我々は、異なる2について話してきました スコープの種類、グローバルとローカル。
>> 変数がグローバルスコープされている場合は、 それはあなたのプログラム全体を意味
その変数にアクセスできます。
そして、あなたの場合、グローバル スコープ変数は、
メインの関数の前にそれを宣言します。
だから、それが右のバット完了です。
そして、あなたの全体の プログラムはそれにアクセスすることができます。
>> それが唯一のローカルスコープの場合は、その 特定の領域に制限変数。
だから、forループ内で宣言した場合、 それだけでは、ループのためにそれにアクセスすることができます。
それとも、内部で宣言した場合 特定の機能、
唯一その関数はそれにアクセスすることができます。
スコープに関する質問。
>> [OK]を、ので、機能プロトタイピング。
基本的にはC、理由 それはトップダウン読み取り、コンパイルします。
あなたは、関数を宣言すると 後半のコードで、
コンパイラは知りません その機能が存在していること。
だから我々は、使用しているもののプロトタイプであり、 これは、基本的には、コンパイラに伝えます
この機能は見に行く、存在します そのため、後のコードです。
だから、あなたのやり方 関数原型
あなたが開始する正確にどのようにあります 関数を記述オフ。
あなたは戻り値の型を与えます、 関数の名前、
し、任意の引数 その関数が取ること。
>> そこで、この中には、簡単な例を見て ここで使用している私達の機能を小文字
基本的にキューブ関数です。
だから整数に取って、 その整数の三乗を返します。
だから我々はそれを書いたので、 主な機能以下の機能、
私たちは利用したいです that--か、我々の出力
その機能にしたいです 私たちの主な機能で、
我々はそのプロトタイプの道を置きます 私たちのプログラムの上部にあります。
そして、我々が呼ぶとき それ私たちの主な機能で、
コンパイラは、関数であることを知っています 後に書かれており、それを見に行くだろう、
それを適切に使用します。
プロトタイピングに関する質問？
はい。
>> 聴衆：だからポイントは何ですか？
私はプロトタイプのポイントを得ることはありません。
なぜそこにそれを持っていませんか？
>> CAMILLE REKHSON：まあ場合 それはときに、ここでダウン
あなたのラインキューブを取得 あなたの主な機能でのx、
コンパイラは考えているということ キューブ関数が実際に存在します。
>> 聴衆：あなたことができませんでした ちょうど前にそれを置きますか？
>> CAMILLE REKHSON：それは よりよいコーディングの練習
あなたの主な機能の下に置きます。
なぜ我々はだろうだから、です プロトタイピングを行います。
ちょうどあなたの場合、理由 多くの機能を持っていました、
それはには本当に厄介になります これらすべての機能を読んで
あなたはプログラムの肉に到達する前に。
うん、あなたはq--を持っていました
>> 聴衆：だから、宣言されました 上部にあなたの変数アップ
あなたはそれにアクセスすることができ、 それグローバル変数にしますか？
それは次のようなものです。 どこにそれを宣言しています
そこに、そのことは知っているので、 それは後でそれにアクセスするために起こっています
そして、あなたはそれを使用することができますか？
>> CAMILLE REKHSON：うん。
はい。
>> 観客は：任意の追加をthe--べき 機能あなたが外のキーを作成します
この事の、or--
>> CAMILLE REKHSON：ええ、あなたがしている場合 他functions--メインを作成します
自身がそうであればfunction--です あなたは他の関数を作成しています、
彼らは外にする必要があります。
はい？
>> 聴衆：パーセントDは何ですか？
CAMILLE REKHSON：パーセントDは パーセントI.と同じもの
これは整数を意味します。
はい。
>> 聴衆：だからint型の主な事は何ですか？
その空隙は何でしたか？
CAMILLE REKHSON：ボイドは言います それは、引数なしで取ります。
聴衆：[聞こえません]。
CAMILLE REKHSON：することができます 少し大きな声を話す、申し訳ありませんか？
聴衆：ええ、申し訳ありませんが、なぜでした あなたは、最初のもののために無効に入れます
そして、第2の1の入力をint型？
CAMILLE REKHSON：ああ、二人 主な機能のためにdifferent--
キューブ機能対？
だから、主な機能で、 我々は理由があり、ボイドを使用
に取られてはパラメータはありません。
キューブ内の一方 機能、我々は、入力を持っています。
それはint型を言う理由は、入力です、 私たちがしているの引数がありますので、
私たちの関数を実行するには取ります。
うん。
質問がありますか？
>> [OK]をクリックし、すぐに 浮動小数点の不正確。
だから我々は無限に多くの実数を持っています。
しかし、唯一の存在 ビットの有限数
我々は、これらの表示に使用することができます 数、およびそれらを表します。
それでは、我々はいくつかの不正確で終わります。
そして、あなたの数字はしません 常に非常に正確に何であります
あなたがしているとき、彼らはあると思います 浮動小数点を扱います。
これは知っておくとよいだけのものです。
このに関する質問？
はい。
>> 観客：これは参照しています ビットオーバーフローの考えに
それは講義中でしたか？
何かが分離ということでしたか？
>> CAMILLE REKHSON：彼らはしています 完全に独立した、ええ。
[OK]を、素晴らしいです。
PULAK Goyal氏：こんにちは、誰もが。
私の名前はPulakある、と私はよ ポインタを介して行くこと。
[OK]を、ので、まずは考えてみましょう メモリがどのように見えるかについて。
だから、ここで私たちを見ることができるように メモリを取る、我々はそれを分割
ブロックの束に。
そして、私たちはそれぞれの参照 アドレスによるブロック、右？
そして、誰もがどのようなタイプの覚えていません 表記我々はアドレスを表すために使うのか？
>> 聴衆：16進、0X。
>> PULAK Goyal氏：16進、右？
だから0Xは、私たちがしていることを意味します 進の話。
[OK]を、ので、どのように我々は、ポインタを作成するのですか？
だから我々は、我々の型を取ります it--がそれにスターを追加入れ、
し、我々は、変数名を追加します。
だから我々が見てきた例はint型です 星のx、char型のスターyおよびフロートは、z開始します。
だから私が言うとき、int型のスター xは、誰かが私に言うことができます
私はそこの話のようなものですか？
>> 対象：ディスクの場所。
>> PULAK Goyal氏：申し訳ありませんが、何？
それを繰り返してくれませんか？
対象：ディスクの場所。
>> PULAK Goyal氏：だからactually--そう何 私は、我々はint型のスターxを持っているときである、意味しました
我々は作成していると言っています ポインタ、それ
のアドレスを格納することができます int型変数ですよね？
char型のスターYとそう、 我々は、ポインタを作成しています
それは、アドレスを格納することができます シャア変数の。
だから、皆に意味をなさない？
うんいいね
>> [OK]を、ポインタを持つので、あります 私たちが行うことができる2つの重要な操作。
そこ参照だし、 参照解除があります。
うん？
>> 観客：あなたが行くことができます 少し遅くなりますか？
>> PULAK Goyal氏：確かに。
私が行くようにうん、うんso--、質問をします you--場合に沿って何かが不明である場合。
だから我々は参照しています そして、逆参照。
だから、アドレスを取得したい場合 変数の場合、アンパサンドを使用しています。
それでは、私はどこかのint xを宣言したとしましょう​​。
そして、私はそれのアドレスを取得したいです 私はアンパサンドXをするだろう、それを渡します。
そして、あなたが取得したいとき ポインタに関連付けられた値、
あなたは間接参照を使用します スターであるオペレータ、。
>> だから私はint型スターxを持っていた、と言うことができます 私はそれが何かを指していました。
私はそれが何の値を取得したい場合 指して、私はちょうど星のxを行うだろう。
それは明らかですか？
それについてのご質問？
うん。
>> 聴衆：だから、一般的に、あなたは xと星を行うことができなくなります
同じxを使用して、x。
あれは正しいですか？
xがある場合ため 変数、あなたが持っています
それはポインタだと取得するために、xで行います。
xがポインタである場合しかし、あなたは必要とします 変数を取得するために、スターxをすることができません。
>> PULAK Goyal氏：はい、そう 質問は時程度でした
我々はstar--ときに使用します あなたは星を使用し、
そして私たちが使用するとき アンパサンド、と私たちすることができます
変数の同じタイプでそれを使うのか？
だから、通常がある場合は、 例えば、int型のx、
あなたは、主に使用しているだろう アンパサンドは、そのアドレスを取得します。
それはありませんので、 Xに服従する感覚。
一方、我々はint型のスターxを持っていた場合、 あなたは間接参照操作を使用しているだろう
それは意味をなさない。なぜなら その場合には、xで使用することができます。
それは理にかなっていますか？
>> 観客：あなたがすることはできませんので、 そして、その後、ポインタ？
PULAK Goyal氏：だから、 技術的には、実際に
ポインタのアンパサンドを行うことができます。
しかし、それは外です このクラスのスコープ。
「あなたの男性のためのpurpose--用 目的は、いつでもあなたは、ポインタを持っています
あなたは間接参照演算子を使用したいです その関連付けられた値を取得します。
そして、あなたが定期的に持っているとき 変数、int型のXのように、
あなたはアンパサンドを使用したいです オペレータは、そのアドレスを取得します。
OK？
>> OK、それでは、ポインタを見てみましょう そして何がフードの下で起こります。
だから私はここに最初に行った事があります 宣言されたint型のxは5に等しいです。
この変数のアドレス 0x04ので、値は5です。
それでは、何が起こるか見てみましょう 次の行を持ちます。
だから今、私たちは、ポインタを宣言します。
そのアドレスは0x08にあり、その 値は、xのアドレスです。
それは皆に意味がありますか？
それについてのご質問？
>> [OK]を、今のは何を見てみましょう 次の行で発生します。
したがって、この次の行では、我々は持っています コピーのアドレスが0x10のあること、
その値は5です。
私たちは5を持ってそうな理由 我々は間接参照、と言われています
我々はint型のスターを宣言したポインタ、。
ときに我々そしてそれは、それを間接参照went--、 それは、スロットは0x04にあるもの、[OK]を、と述べました。
そして、それはそれに行ってきました。
そして、何のx x0--です 0x04の、その値は5です。
それは理にかなっていますか？
うん？
>> 聴衆：なぜコピーのアドレス Xポインタ上記の4バイトだけ？
>> PULAK Goyal氏：はい、これは間違いですon--
>> CAMILLE REKHSON：だから、はい、覚えています この、16進数で書かれています。
PULAK Goyal氏：ああ、うん。
CAMILLE REKHSON：だから、この 実際には8、その後16
我々はそれを言ったので、 ポインタは、覚えています、
私たちのIDEで8バイト長であることを行っています。
PULAK Goyal氏：ええ。
だから明確にするために、 ポインタは8バイト長です。
intが4バイトです。
だから理由は何を 0×04から0×08にジャンプ
私たちがしなければならなかったからです 8バイトのジャンプを行います。
それ以来、for-- コピーは、単にintで
それは、8バイトの半分である4バイトです。
だから私たちはただの0x10にジャンプし、 これは離れて0x08のから2です。
その他の質問は？
[OK]を、そうlet's--？
>> 聴衆：なぜではありません int型のコピーの値
それは5の代わりに0x04がある理由だけthe--？
>> PULAK Goyal氏：OK、なぜそれがある5？
[OK]を、ので、the--はので、最初のときましょう 種類の面でこれについて考えます。
だから私は、int型のコピーを言っています ポインタの星に等しいです。
だから、ポインタの型は何ですか？
これは、int型のスターです。
そして、ときに私そのデリファレンス、 型はintになります。
だから我々は、保存するために期待するもの ここでは実際にintです。
それは理にかなっていますか？
聴衆：確かに、少し。
PULAK Goyal氏：だから、通常時 あなたがタイプの観点から考えます、
それはあなたが何であるかを理解するのに役立ちます そこに行くべき値の型。
だから、通常は除外することができます これらの一般的なエラーの多く
種類の観点で考えることもできます。
私はもう少しスライド見ていきましょう。
そして、我々は、質問を受けることができます ポインタ部の終わり。
[OK]を、ので、ここでバグのあるプログラムを持っています。
そしてそうanyone--は誰かを伝えることができません 私は、このプログラムの何が問題になっているのですか？
右、私たちはしているもの ここで行うことを期待
私たちが何をしたいですis-- 変数xはintを取るです
それに等しい5作るit--を回します 代わりに3のと、その印刷します。
しかし、それは起こっていません。
なぜ誰かが私に言うことはできますか？
はい？
>> 聴衆：とき機能 それが引数のようto_fiveは、xを使って
それはx自身かかりませんが、 代わりにそれを、コピーを作成します。
そして、それはその上の操作を形成しています。
しかし、そのため、あなたはしないでください xの実際の値を変更します。
あなたは[聞こえない]しているので。
>> PULAK Goyal氏：右、 右、私たちが呼ぶとき
機能to_five、どのような 我々は考えてやっています、
私のコピーを与えます その関数に値。
その関数は、その後、起こっています いくつかの操作を行います。
それは返すしかし、一度、それはアウトになりましです ここでの主な機能の範囲。
だからxが実際には、まだ、 3に等しく、我々は3を印刷します。
OK、それでは、この問題が発生したか見てみましょう。
>> [OK]を、そう宣言したものはありません。
次に、ここで、xは3です。
そして今、それは位置にis-- 2、aがスコープにまだありません。
そして今、我々は、3を配置するために行きます 今3の値をとるあります。
4で、我々は今、5に変更します。
しかし、今、私たちが戻ってジャンプしたとき print文である5、
スコープ外になりました。
xはまだ​​3に等しいです。
これは、すべての人に意味がありますか？
[OK]を、ので、今のは方法について話しましょう 我々はこの問題を解決するためにポインタを使用することができます。
誰がどんな考えを持っていますどのように我々 ポインタを使用することによってこの問題を解決するだろうか？
>> 聴衆：あなたはint型のスターに取ります 代わりにto_fiveにintの。
>> PULAK Goyal氏：申し訳ありませんが、あなたが発言だろうか？
>> 聴衆：あなたはint型のスターに取ります 代わりにto_fiveにintの。
PULAK Goyal氏：OK、はい。
それでは、ただ渡す代わりpass--てみましょう 値は、のは、参照することにより、それを渡すことができます。
右この新しい機能、？
そして、私たちにアドレスを渡すことにより、 アドレスに操作を行うことができます。
そして、私たちが実際にしています、 実際には、Xを変えます。
それでは、それがどのように機能するかを見てみましょう。
>> [OK]を、ので、この例では、我々はそれを修正しました。
私たちは、署名を変更しました int型に取るto_five
代わりに、ここだけでint型のスター。
その後、我々この間接参照 Aとそれに5を割り当てます。
そして今、この意志は、実際には、5を印刷します。
それでは、手順がここでどのように機能するかを見てみましょう。
>> したがって、最初のステップと、 まだ宣言されたものはありません。
そこでここでは、第二のステップと、 我々は、xが3であると述べてきました
しかし、スコープの外にはまだです。
今三線で、私たちは持っています xはまだ​​3に等しいです。
そして今、私たちは何in--合格しています 今、xのアドレスであるに格納されています。
に意味があるかという 誰も、我々はそれを得た方法？
右、私たちはどのようなamper--を持っています 我々は、関数にアンパサンドxを渡します
to_five。
そして、次の行に、どのような 我々は、我々は間接参照しています。
>> そして参照解除によって、私たちは可能です 3から5にxの値を変更します。
xはそのアドレスが0x12に住んでいるので。
そして、最後に、時 私たちは、主に戻り
このaが外になりましたですが、 スコープ、我々は、実際には、Xを変更しました。
そしてそれは5です。
これについてのご質問？
うん？
>> 観客：あなたは私を伝えることができ アンパサンドxは何でしたか？
私はアンパサンドが好きだと思いました。
>> PULAK Goyal氏：はい、私たちは同じを使用 多くの異なった事のシンボル。
だからここに、あなたがhave--時 この場合、あなたが持っているとき、
私はときに、このケースではそうguess-- あなたは、ポインタを扱っています
あなたが前にアンパサンドを置いたとき int型変数のint型、またはcharの、
またはフローは、あなたが何を言っています で、私はこののアドレスを与えます。
しかし、どのようなあなたが考えていた、ときに他の あなたは、のは言わせているアンパサンドを使用することになり、
if文です。
あなたは真の持っている、といくつかの変数 それは、いくつかのブールと評価
いくつかの他の変数 それはいくつかのブールを検証
あなたは、そのの取得したいです。
その後、アンパサンドを使用します。
SPEAKER 1：うん、そうちょうど今日、私たちはしました 約3異なる用途を話しました
アンパサンドの。
我々は、2つのアンパサンドを、持っています 何Pulakは、今説明しました。
私たちは、1アンパサンドを持っています カミーユは説明するものです
以前、1アンパサンドです。
そしてそれは、ビット単位のANDのためです。
そして、両方のことに注意してください 条件AND--または、申し訳ありませんが、
論理AND演算とビット そして、、これらの2つの数、権利を持っていますか？
それは何かのアンパサンドました アンパサンド何か、
何かアンパサンド何か。
ここで、私たちは、アンパサンドを持っている場合 何か、それが逆参照です。
>> PULAK Goyal氏：うん、偉大な質問。
うん。
>> 聴衆：行でない理由 図5aとなるN / Aスター？
なぜ彼らはちょうど種類の保持されません。 前の行と同じ値？
>> PULAK Goyal氏：ので、 我々は、機能を終了しました。
だから何happens-- 今、私たちはしていますwhat--
その関数の範囲のうち、 何が実際に起こります
メモリから削除されたものです。
うん。
>> 対象：3〜 または4つ星Aは5に等しいです。
PULAK Goyal氏：はい。
観客：それは正確に何を意味するのでしょうか？
PULAK Goyal氏：それはどういう意味？
聴衆：うん。
PULAK Goyal氏：だから 質問は何であるか、でした
あなたがオンラインで何をしていますthat-- 私たちが言うとき、星は5に等しいのですか？
だから、星を覚えています 間接参照演算子。
そのようにすると、この場合には、ポインタです。
これは、int型のスターです。
だから、ときに我々によって間接参照 スターを使用して、我々は何を言っています
、で保存されているものに移動され、 そこそこtake-- A--に格納されたアドレス、
今、いくつかを持って それに格納されたアドレス。
どこにそのアドレスポイントに移動し、 今では5にあるものは何でも変更します。
うん。
>> 聴衆：あなたが言うことができます それより簡単な点では？
5へのアドレスを変更します。
>> PULAK Goyal氏：私たちではありません 5のアドレスを変更します。
Aはそれでいくつかのアドレスを持っています 興味のある変数のアドレス。
そして、私たちは何を言っています 我々は間接参照である場合には、
今、私たちはchange--たい 私たちは今参照しています
直接変数の関心。
それは理にかなっていますか？
>> SPEAKER 1：考えるもう一つの方法 それのアドレスですのでgo--されます。
星はそれに行くと言います 対処し、その値を確認します。
そして今5にその値を設定します。
だから、に行く、と言います xのアドレス、どの
保存されているものになるだろう であり、5に変更します。
PULAK Goyal氏：ええ？
聴衆：だから位置であります ポインタは、アドレスが起こっています。
しかし、値が割り当てられています アドレスに基づく値。
PULAK Goyal氏：ええ。
これについては他の質問？
聴衆：私は質問があります。
PULAK Goyal氏：ええ、申し訳ありません。
聴衆：だから、そうstore-- あなたは[聞こえない]と言っている場合。
PULAK Goyal氏：はい。
観客：あなたがする必要がありますか アンパサンドを使用して、xを保存しますか？
なぜあなただ​​けのxが言うことができません あなたのint [聞こえない]の前に？
PULAK Goyal氏：So--
聴衆：[聞こえません]。
PULAK Goyal氏：だからあなたquestion--はOHです。
だからあなたの質問は、なぜwe--することはできません 機能to_fiveに、なぜ我々はできません
ちょうど、Xを渡しますか？
>> 聴衆：右。
>> PULAK Goyal氏：ええ、[OK]を、ので、この再び タイプの私達の議論に戻ります。
だから、機能to_fiveは今 int型のスターのタイプを期待。
だから、xの型は何ですか？
Xは単なるintです。
しかし、この機能 期待するint型のスターです。
だから、その変数を期待 それに格納されたアドレスを持っています。
だから、入れyou--方法です アンパサンドは、ので、それはです
どのように我々はに渡します now--あるアドレス、
それはと解釈 int型のスターとして、ええ。
素晴らしい質問です。
この上の任意の他の質問？
うんいいね。
>> [OK]を、ので、今の話をしましょう ポインタ演算について。
だからここに、加減算 私はポインタを調整
iの倍の大きさによって、 ポインタバイトのタイプ。
それでは、それがどのように見えるかを見てみましょう。
だからここに、私たちは宣言しました int型xは5に等しいです。
そして今、我々はポインタを宣言するつもりです yは、そこxのアドレスを渡します。
だから我々はそれを持っています。
このため、xは0×04で保存されています。
だから今yは等しいです。
そして、誰かが、彼らが何を考えて私に言うことができます 私たちはY行うプラス1に等しいとき起こるのだろうか？
うん？
>> 観客：それは0回0 8に変更しますか？
>> PULAK Goyal氏：サイズ、およびtype--
>> 観客は：あなたはアドレスを移動しています。
PULAK Goyal氏：ええ、それはイエスwas--。
So--右。
だから、0x08のに変更されます。
そしてbecause--ので、あなたはこれを使用したいです 式、ポインタの1倍
ポインタはsize--です
>> 【学生つぶやき]
>> PULAK Goyal氏：そうです。
>> 【学生つぶやき]
>> SPEAKER 1：だからタイプ ポインタはto--
>> PULAK Goyal氏は：ええ、です、 ええ、それは4バイトです。
>> SPEAKER 1：だからint型は4バイトです。
>> PULAK Goyal氏：だから私たちはA--せた場合の 私たちは、私が推測する、char型を宣言したと言います。
それでは、私たちを言わせて何をthat--う か何かに等しい文字Xを持っています。
そして、私たちは、0x04の時とのアドレスを持っていました 何Yだろうプラス1が今等しいですか？
申し訳ありません、何？
>> 聴衆：0x05を。
PULAK Goyal氏：0x05を、右。
誰もがそれを見るでしょうか？
[OK]を、今のは、それがフロートだとしましょう​​。
何が起こるのでしょうか？
誰でも？
そこで山車は何バイトですか？
>> 対象：4バイト。
>> PULAK Goyal氏：そうです。
だから、これと同じことになります。
クール。
[OK]を、今のは話をしましょう ポインタと配列について。
だから、上でこれを見ました 前の2つのpセット、
私たちはそのようにアレイをtreat--できる場所と ポインタは同じものではありません。
しかし、我々はポインタとして配列を扱うことができます。
そこでここでは、我々はこの配列を持っています ここでは、3つのスロットを有しています。
最初slot--我々に 一、二、三を持っています。
>> we--は私たちが割り当てることができるのであれば 言って、我々は配列を持っていること、
その間接参照。
そして、ときに我々は間接参照 私たちが実際にやっていること、
同じスロットを参照しています。
だから、星の配列が1に等しいです。
私たちはどのようにできましたcould- 私たちは何that--書きます
我々はそれを書くことができる別の方法はありますか？
>> 聴衆：アレイ0に等しい1。
>> PULAK Goyal氏：その通り、 誰もがそれを見るのでしょうか？
ここでだから同じこと。
だから我々は、配列を持っているとき プラス1、我々はそうeven-- do--
算術を覚えている私たち ちょうど我々が行うとき、について話しましたプラス1
または右、4バイトでそれを上に移動します。
誰もがそれを見るでしょうか？
そして、その辺、ときに我々は間接参照 それが、私たちは2にそれを設定することができます。
そして、それは我々が設定方法を説明します 次のブロック2へ。
書くためにそしてそう別の方法 それは、アレイブラケットだろう
0ブラケットは1に等しいです。
>> 観客：あなたが括弧を必要ですか？
>> PULAK Goyal氏：はい、あなたはだから 全量を逆参照
配列プラス1。
[OK]を、配列プラス2も同じこと。
これについてのご質問？
うん。
聴衆：だから配列であります 自動的に0に設定されていますか？
>> PULAK Goyal氏：配列は申し訳ありませんis--、何？
>> 観客：配列は0です。
配列のアドレスは、ちょうど0です。
>> PULAK Goyal氏：だから質問がありました、 配列のアドレスは、ちょうど0のですか？
だから、ない、アレイは、いくつかのアドレスを持っています。
だから、ときに我々それを間接参照、 that's--あなたはabout--考えることができます
文字通り指し示すポインタのような 配列の先頭に。
だから、いくつかのアドレスを持っています。
我々は、それが何であるかを知りません。
しかし、我々はそれを間接参照、我々が知っているとき それは、配列の先頭です。
そして、私たちはすることによって移動したとき 1、私たちは移動しています
そのアドレスがあった場所からの相対。
その他の質問は？
うん？
>> 観客：あなたが行うのであれば 配列ブラケットプラス1--
PULAK Goyal氏：申し訳ありませんが、 あなたはI--を話せますか？
聴衆：ええ、あなたがない場合 配列ブラケット[聞こえません]。
それでは、あなたはpointer--を置く場合
PULAK Goyal氏：申し訳ありませんが、私はあなたを聞くことはできません。
あなたはそれもう一回言うことはできますか？
>> 観客：あなたはOKです。
>> PULAK Goyal氏：[OK]を、申し訳ありません。
うんいいね。
ええAny--。
だから、配列ブラケットに行くとき3--
>> PULAK Goyal氏：ええ。
>> 観客：there--はないでしょう--isn't それは0、1、2、および3のような4つのスポットでありますか？
なぜそれがアレイ2をint型ではないですか？
>> PULAK Goyal氏：いいえ、そうちょうど大会 我々は配列を宣言するときに、Cの、is--
私たちはそこに置か数をwe-- 私たちが望むどのように多くのスロットがあります。
しかし、配列のインデックスがあります 実際には配列0、配列1、配列2。
だから、ただ慣例です 我々は配列を宣言する方法について。
うん、他の質問？
うん。
聴衆：だから我々はまだです ポインタの話ですよね？
PULAK Goyal氏：ええ。
聴衆：あなたはまだ行うことができます アレー0用の星が1に等しいですか？
PULAK Goyal氏：いや、いや、so-- [OK]を、ので、質問があった可能性
あなただけの星の配列ブラケットを行います ゼロ、その後は1に等しく、その言います。
だから、ない、私たちは何を言っています ここで私たちがthink--ことができるということです
我々はポインタとして配列を扱うことができます。
だから我々は我々がしているものhave-- 私たちは二つの方法がありますと言って
今、同じブロックに参照します。
あなたは配列ゼロを持っているのであれば、doing-- その種類は今intです。
そして、あなたは星を取った場合に、 無効なものを取得します。
私たちはここで言っているそうです 2つの代替方法があります
同じブロックを参照することができます。
あなたは配列を行うことができますどちらか ブラケット0は1に等しいです。
それとも、間接参照を行うことができます 0に等しい、と持っている配列。
のだから二つの方法 同じことをやって。
うん。
>> 聴衆：なぜそれではありません to--追加するint型1の大きさ
>> PULAK Goyal氏：int型1のサイズ。
>> 観客：それは1、オフの移動だから。
>> PULAK Goyal氏：それはだから Cが働くだけの方法。
それはちょうど道のポインタです 演算が定義されます。
これは、ポインタを取りますよ。
そして、あなたはどんな追加 それには、それを掛けますよ
何のサイズによって ポインタストアはええ、です。
うん。
>> 聴衆：だから、私たちが扱うことができると言います ポインタと配列と同じに、
しかし、それらは異なっていること。
それでは、彼らが違いますの？
私たちは、で何を行うことはできません 1ではないが、他の？
>> PULAK Goyal氏：この目的のために クラス、私はyou--を何it's--を考えます
>> SPEAKER 1：だから、[OK]をwe--、そう、ために たとえば、あなたが割り当てた場合、メモリ
あなたはへのポインタを持っています 例えば整数、。
あなたが起動しようとした場合 ポインタ演算を行います
そのメモリの量を超えました あなたは、エラーに遭遇するだろう、割り当てられました。
私たちは、アレイと知っています 前もって言って、[OK]を、私
基本的にこれをallocate--したいです 私が割り当てたい、と言います
三つの整数のための十分な部屋。
そして今、我々はいるかのようにメモリを扱うことができます 我々は、これらの整数のすべての3つがあります。
メイク感覚のようなものをしていますか？
>> PULAK Goyal氏：ええ。
うん。
>> 聴衆：だから星 アレイは、1を割り当てることです
配列のインデックス0に？
PULAK Goyal氏：はい。
>> 観客は：だから、何をした後で the--私の観点から次の2行
あなたがしようとしていることを理解 ここでポインタ演算を使用するには、
しかし、再び、私は理解していません 何ポインタ算術演算です。
だから、配列プラス1、あなたがしています あなたが今していることを言って
話をするつもり 配列への最初のインデックス。
>> PULAK Goyal氏：右、など 働く配列である理由は、
ここで、我々はint型のスターとして考えることができます。
だから、我々はポインタ演算を行うとき その上で、どこに式を覚えています
私が推測the--我々が取るものは何でも 現在のアドレスは、
し、我々は、追加すると、 それへの1、実際に我々
の大きさによって1を乗算 私たちが操作している事。
したがって、この場合には、int型のサイズ。
そして、我々はそれを移動 その分だけ転送します。
>> SPEAKER 1：だからふり あなたは、Bアレイスターを持っています。
PULAK Goyal氏：ええ、[OK]をクリックします。
SPEAKER 1：あなたの手で。
ここに行きます。
PULAK Goyal氏：または私はそうjust--ことができます。
でそうhere-- OKなので、配列 始まり、ちょうどここにあります。
だから我々は、配列を間接参照、我々があったとき ちょうどここに最初のブロックを参照します。
しかし、今、私は、配列プラス1を実行したときに、その その矢印is--右今ここにあります。
それは理にかなっていますか？
右、このブロックがあるため、 4バイトであるサイズはint、の。
だから、私たちがやっていることは私たちがしているです 4バイトを超えることによって、そのポインタを移動します。
私たちは、算術演算を行うたびに その上、それは常になります
4バイトの単位で移動します。
これは、int型の星のようですので。
それは理にかなっていますか？
OK。
>> 聴衆：だから、配列内のもの 5バイトだった、我々は5 bytes--それを移動したいです
>> PULAK Goyal氏：右、私たちは持っているかのように、 char型の星は、我々は1バイトで、それを移動したいです。
だから、char型の星の場合には、 それはちょうど1によってそれを上に移動すると思います。
観客は：取得するには 次のあなたはスターが必要です。
PULAK Goyal氏：ええ、ええ、 それは理にかなっているのでしょうか？
SPEAKER 1：私たちはチャットすることができます それについての詳細後で。
PULAK Goyal氏：ええ、ええ、確かに。
うんいいね。
それでは、次のセクションに移動してみましょう。
SPEAKER 1：ああ、[OK]をクール。
ええ、それは私です。
すべての権利、素晴らしいです。
[OK]を、ので、今は少し上にクールです メモリに関する一般的な情報。
また、私は事実を認めます 彼らはかなり迅速に行っていました。
これは、材料の多くが取得することです 時間半の貫通。
しかし、どのようなトピックがある場合 深い多くを行ってみたいです、
我々は、必要があるとしています 営業時間今週
あなたは私たちと1対1でチャットすることができる場所。
それとも、ただで出てくる可能性があり 終わると、私たちは物事についてチャットします。
そしていつものように、感じます 質問をすること自由に。
驚くばかり。
そこでここではメモリの私たちの絵がいることです 私たちは講義で億回を見てきました。
そして、我々は、このスタックを知っています 下から成長します
ヒープがダウン成長します。
そして、物事の違いは何でしょう 私たちは、ヒープとものに保つこと
我々は、スタック上に保存しておくことを？
誰かがそこに何かを投げます。
うん。
>> 観客：それはスタックであります ちょうどあるもののために
私たちはしている一時的変数 特定の機能を使用して宣言しますか？
SPEAKER 1：美しい、ええ。
だから、いつでも、レッツ 我々は関数にしていると言います、
我々はいくつかのローカル変数を持っています。
これらは、スタックに終わるしようとしています。
場合は、代わりに、私たちは、malloc関数を呼び出します 実際にメモリを割り当て、
それは、常にヒープから来ています。
だから、クールええか？
>> そして、その結果、任意のメモリを覚えています あなたがmallocを使用して割り当てることを、
それは、ヒープ上に終わるだろう。
そして、あなたがすることを忘れた場合 無料のそれは、コンピュータの
ことを知っているつもりはありません あなたはそれで行われています。
だから、ちょうどに起こっています メモリ内に存在たむろ。
そして、あなたは基本的にしています そのメモリをリークします。
あなたはそれを失っています。
あなたはコンピュータを語ったことはありませんので、 私はそれを使用して終わりだねえ、使用すること自由に感じ、
そこに他のものを置きます。
クール。
そこに任意の質問？
はい。
>> 聴衆：だから、どのような メモリのスタックがありますか？
非動的なフィード、委任？
あなたはそれを何を呼ぶのでしょうか？
>> SPEAKER 1：確かに、あなたができるよう ローカル変数と考えます。
関数への実際の呼び出し 積み重ねるしようとしています。
他に何か？
うん？
聴衆：どのように無料で行います あなたがthe--するために追加メモリ
SPEAKER 1：確かに、そうしたときに割り当て ヒープ上のメモリは、あなたがmalloc関数を呼び出します。
だから、そのバックあなたを与えます メモリ内のいくつかのアドレスへのポインタ。
だから、あなたは右、そのポインタと呼ばれると言いますか？
次に、あなただけのフリーポインタを言います。
そして、それは、メモリを解放します。
クール。
その他の質問？
はい。
>> 観客：何がします 動的に割り当てられた意味？
>> SPEAKER 1：動的に割り当てられました あなたのプログラムの過程で、意味しています。
だから、あなたがmalloc関数を呼び出すとき プログラムの途中、
プログラムの開始時に、 割り当てられた何のメモリがありません。
そして、コンピュータのような そのコードをステップ、
それは、メモリを割り当てるために起こっています。
だから、我々は動的にすることによって何を意味するかです。
良い質問。
うん？
観客：あなたが定義する場合 角括弧を持つ配列、
まだ[聞こえない]ということでしょうか？
SPEAKER 1：それはいい質問ですね。
あなたは配列を割り当てるとき、私が思うに、 それは実際にスタックにそれを置きます。
私は約ポジティブありませんよ そのため、私を引用しないでください。
>> SPEAKER 2：私は、ええit--を考えます それはスタック上にそれを置きます。
>> SPEAKER 1：スタックにそれを置きます。
[OK]を、クール、確認されました。
その他の質問？
うん？
>> 観客：あなたはmalloc関数を委任する場合、 コンピュータが自動的にしません
あなたの変数にメモリを割り当てますか？
SPEAKER 1：うん、用 あなたのローカル変数、
それは自動的に置きます スタック上のメモリ。
聴衆：だから何です mallocを使用してのポイント？
SPEAKER 1：何が mallocを使用してのポイント？
だから我々は例の束を見て、 以下のような、例えば、スワップを使用して、
我々は、の範囲を配置したい場所 何かする変数
ただ、その関数呼び出しを越えて。
そして、私たちは何かをしたいです 私たちが周りに渡すことができます
我々がアクセスできます 別の場所から。
私たちがしたいと思いますところです ヒープ上のメモリを置きます。
すべてのこれらの異なるだから 機能はそれにアクセスすることができます。
>> 観客は：あなたはちょうどそれを説明できますか？
>> SPEAKER 1：だから一つの選択肢はそうis-- 質問した、ことができます私たちはallocate--
申し訳ありませんが、私たちが宣言することができます グローバル変数、基本的に。
それは一つの選択肢です。
しかし、それらの多くの、それら 本当に厄介取得する傾向があります。
そして、我々は一般的に考えます 悪いデザインの。
うん。
クール、他の質問？
驚くばかり。
[OK]を、先に進みます。
だから、これは実際にあります どのようにメモリを割り当てます。
我々は、この少しについて話しました。
私たちは、malloc関数と呼ばれるこの機能を使用します。
そして、あなたはどのように多くのバイト数でそれを伝えます メモリ、ヒープ上のようにどのように多くのバイト、
あなたが欲しいです。
そして、それは、アドレスを返すために起こっています そうへのポインタ、メモリの一部
ことそれはあなたのために割り当てられています。
だから、型はvoidスターになるだろう。
それはへのポインタになるだろう 何でもあなたがそこに置くことにしました。
あなたはいつでも呼び出します malloc関数、我々はすでに述べました
あなたは私たちはそれを解放する必要があります メモリリークがありません。
>> 他の事は何ですか あなたは絶対にそれ
ひとつひとつをしなければなりません 時間あなたはmalloc関数を呼び出しますか？
[OK]を、あなたはそれを解放する必要があります。
他の事は何ですか？
美しい、nullを確認してください。
だから、ええ、それは正しいです そこにボード上。
あなたが割り当てしようとする場合 メモリと、あなたは残されたメモリを持っていません、
コンピュータが言おうとしています、 私はあなたを与えることは何もありません。
そして、それはあなたに戻ってヌルを与えます。
その上での質問？
うん。
>> 聴衆：なぜあなたがしたいと思います 特定の型のポインタを宣言
ボイドスターは扱うことができるとき とにかく、すべてのポインタ型？
SPEAKER 1：良い質問。
なぜ我々はint型のスターを言います 星を無効にするのではなく、
ボイドスターはすべてを扱うことができますか？
だから我々はこれまでにしたくありません 明示的にポインタをキャストします。
それはちょうど悪い習慣です。
しかし、我々はint型の星について話します ただの理解として、
これは、整数へのポインタです。
>> 聴衆：[OK]をクリックします。
>> SPEAKER 1：うん、それが可能に あなたはそれに値を操作します
整数として。
>> 聴衆：ああ、[OK]をクリックします。
ボイドスターは、あなたがそれを行うことはできないだろうか？
>> SPEAKER 1：それはに依存 コンテキストうん、そう心配しないでください
あまり心配しないでください そこ種類について。
ちょうどその、一般的には、malloc関数を知っています 何かへのポインタを返します。
良い質問。
>> 聴衆：なぜあなたは掛けません それから10倍？ [聞こえません]。
>> SPEAKER 1：確かに、私はちょうどでした ここではどこにランダムな例をやって
私は十分に割り当てるしたいです 10の整数を格納するための部屋。
ただランダム選択。
うん。
うん、最大何ですか？
>> 観客：あなたは何を nullをチェックすることによって意味ですか？
あなたがチェックしますか nullまたはmalloc関数へのポインタ？
SPEAKER 1：はい、まさに。
そこで問題は、何でしたか 我々はヌルにより小切手で意味ですか？
我々はmalloc関数を呼び出すいつでもto--たい 私たちは、ポインタを返されています
私たちが言いたい、です ヌルに等しいポインタ？
だから、文字通りPTR。
PTRがnullに等しいです。
はい。
観客は：だから、私は親切でした あなたならば、不思議の
、malloc関数へのポインタを初期化しません それは、malloc関数の先頭を指しますか？
それはarray--だ場合ので、
SPEAKER 1：それは素晴らしい質問です。
うん、あなたはmalloc関数を呼び出す場合、 のは言わせit--ポインタ、
そこでここでは、メモリの10バイトを割り当てます。
だから、私は十分に、ごめんなさい 10の整数のための部屋、
我々は、のアドレスを取得するつもりです メモリの最初の作品。
それはいい質問ですね。
うん。
>> 聴衆：割り当てることにより 10広範囲の整数、
あなたが実際にそれを使用することができます ほとんどlike--としてポインタ
整数の配列のような？
SPEAKER 1：うん、そうすることができます 整数の配列としてそれを使うのか？
うん、まさに、これはまさにPulakです 、あなたはカップルが前にスライドしon--示しました
我々はOK、これは、言うところ 本当にただの種類of--たち
考えることができます 10整数の配列。
それはちょうどヒープ上にあることを起こります。
聴衆：しかし、あなたはアクセスできませんでした それ角括弧記法と？
SPEAKER 1：あなたが実際にアクセスすることができました 角括弧表記とそれ、ええ。
あなたはそれらを同じに扱うことができます。
はい。
>> 聴衆：なぜだろう ポインタは、これまでnullになりますか？
>> SPEAKER 1：なぜだろう ポインタは、これまでnullになりますか？
あなたはすべてのを使用する場合 ヒープ上のメモリ。
あなたのプログラムが食べている場合は、 、食べメモリを食べて、
何も、その後、左ありません malloc関数は、あなたが言う場合say--になるだろう
私はそれが起こっている、100以上のバイトをしたいです 言って、私は100バイトを持っていません。
ここではnullです。
ことを意味し、私は失敗しました。
はい。
>> 聴衆：その場合は、 nullは右、何もありませんか？
>> SPEAKER 1：はい、その中 場合は、nullが何もありません。
あなたは何のアドレスを持っていません。
全く記憶がありません。
すべての権利、に移動。
[OK]を、のは、本当にすぐに話をしましょう バッファオーバーフローについて。
私たちは、バッファオーバーフローの発生する可能性があるのはいつですか？
我々はA--たちがあるとしましょう メモリのチャンクを割り当て、
我々は内の文字列を記述するつもりです。
そして、私たちは言うつもりです、 [OK]を、私は割り当てするつもりです
6文字のための十分な部屋。
そして、私はお願いするつもりです いくつかの入力のためのユーザー。
そして、ユーザ入力、例えば、こんにちは。
そして、それは完璧にフィット 我々は細かいので、
ハローのすべての文字のための部屋、 ヌル終端文字。
部屋のプレンティ、問題ありません。
>> しかし、我々はチャンスを何を与える場合 我々のプログラムを使用するには、邪悪なユーザーのために、
彼らはない6文字で入力し、 か5文字が、百万円となりました。
彼らは、タイピング、タイピングを維持し、 タイピング、何が起こるだろうか？
まあ我々は与えます コンピュータenough--または申し訳ありませんが、
我々は、この文字列を与えました 5文字のための十分なスペース。
だから、私たちはのようなものを取得するつもりです だこれ、どこに悪人
入力に入力すると上書きすることができます バッファのサイズ、
その量を超えて実際に行くことができます ことそれは、もともと割り当てられています。
そして、あなたは何ができますか、 あなたが行うことができます本当に邪悪なもの、
リターンアドレスを上書きです。
基本的にどの手段 あなたはこの種の取ることができます
プログラムの動作を制御します。
だから、非常に高いレベルで バッファオーバーフローがあるとき
あなたは、メモリのいくつかの量を割り当てます。
そして、このyou--あなたがしているので、 ユーザー入力または何かを取ります
あなたが境界を超えて行くthat--様 あなたが最初に割り当てられたものの
そしてあなたのプログラムをめちゃくちゃに開始します。
はい？
>> 聴衆：なぜしないことだけ セグメンテーションフォールトを返しますか？
>> SPEAKER 1：なぜしないこと セグメンテーションフォールトを返しますか？
それは可能性があります。
時には、コンパイラや ランタイムの間、
実際にそれを確認しようとしています。
特定の物事が起こる場合、および これは、下位レベルの一種であります
あなたは知っている必要があります。
しかし、あなたが設計していない場合 適切にこれらのシステム、
あなたはチャンスがあります ちょうどそれをキャッチし、ないの
take--コンピュータを許可します 邪悪な人は、お使いのコンピュータを制御することができます。
うん。
>> 聴衆：[聞こえませんか]？
SPEAKER 1：確かに。
私はバッファを言うときああ、私はちょうど意味します あなたが割り当てられてきたメモリの量。
だからここに私はああ、私たちが割り当てられてきた、と述べた6 6文字のための十分な余地をchar--。
そして私はちょうど私のバッファことを呼び出します どこで情報を書き込むことがあります。
うん。
この上の任意の他の質問？
うん。
>> 観客：あなたはそれを阻止する方法を教えてください
どのようにそれを停止するのですか？
SPEAKER 1：素晴らしい質問です。
どのようにそれを停止するのですか？
どのようにして、バッファオーバーフローを防ぐのですか？
まあそれを行う方法の1つは、のようなものです 私たちは常に増加のGetString、
我々が割り当てるメモリの量 ユーザは、大量のテキストを入力した場合。
もう一つは、あなたの場合にのみ、です 6文字にしたい、クイックチェックを実行します。
入力のみ6文字を言います。
うん。
それでは、あなたがいたとしましょう 私たちが行っている作業on--
ウェブのものに行くために少し 後でcourse--ではなくレッツ
あなたが希望、フォームに取り組んでいると言います ただで渡した可能性がどのくらい制限しています。
うん。
>> 観客は：のGetStringを引っ張ります スタックからメモリ、右？
ただ明確にしますか？
SPEAKER 1：1つのより多くの時間？
聴衆：DOESのGetString スタックからメモリを取りますか？
SPEAKER 1：私は信じてGetm-- GET int型は、ヒープからメモリを取ります
それはALLOCを呼び出すため。
聴衆：ああ。
OK。
SPEAKER 1：うん、mallocとreallocの。
その他の質問？
うん。
>> 聴衆：だから定義することで、 バッファのサイズは、
あなたがれるのを防ぎます コー​​ドを挿入することができるという
それは[聞こえない]を越えてスライドすることができます。
>> SPEAKER 1：だから、定義することにより、 バッファのサイズ、
[OK]を、ここでどのようだ、と述べてきました 我々が使用することができます多くのメモリ。
あなたは上にユーザーが書き込むことができるようにした場合、 あなたが問題に実行しようとしています。
意味をなさない。
驚くばかり。
それでは、一緒に移動してみましょう。
大丈夫。
エラーといえば、ここにいます いくつかの一般的なエラーメッセージ
あなたがあったが、それは最大を示している可能性があります コー​​ディング、あなたの問題セットに取り組んでいます。
1のチャンス これらは、クイズに現れます
過去数年間は、任意の表示であれば。
だから、答えは一種のです ここでボード上のアップ。
しかし、いくつかのより多くの叫ぶ気軽に。
>> なぜセグメンテーションフォールトが発生する可能性がありますか？
なぜあなたは、セグメンテーションフォールトを得るかもしれません あなたはあなたのプログラムを実行しているとき？
>> 聴衆：[聞こえません]。
>> SPEAKER 1：良いです。
ええ、私たちは、アクセスしようとした場合 私たちに与えられていないメモリ。
我々NULLポインタデリファレンスの場合。
例えば、我々はmalloc関数を呼び出す場合は、 そして、それがnullだかどうかを確認することを忘れ
そして私たちは、コンピュータのそれを使用してみてください 私たちにセグメンテーションフォールトを与えるつもり。
良い。
暗黙のはどう 関数の宣言？
どういう意味ですか？
観客：あなたが使用しようとしています あなたが定義されていない機能。
SPEAKER 1：良いです。
あなたは、関数を使用しようとしています あなたが定義されていないこと。
だから、2つのうちの1つである可能性があります。
多分それは例のようでした カミーユは、以前のあなたを示しました。
そして、あなたは主な機能を持っています それは、キューブと呼ばれるものを呼び出します。
そして、あなたが忘れてしまったとしましょう このプロトタイプを書き込みます。
あなたが言うのを忘れて、ちょっとコンピュータ、 私はキューブと呼ばれるこの機能を持っています。
あなたは、後でそれを見ることができます。
それでは、あなたが書くのを忘れたとしましょう プロトタイプは、このエラーが発生する場合があります。
もう一つは、のは言わせています あなたは、printfのを使用しようとしました
そして含めるのを忘れました 標準ライブラリ、
それは暗黙の言おうとしています 関数の宣言。
そして最後に、ではなく、少なくとも、 未宣言の識別子。
うん。
>> 観客は：あなたは、問題の範囲を持っています。
多分あなたがしようとしているように だローカル変数を呼び出します
地域別の種類です。
SPEAKER 1：今、あなたが持っている場合ので、 スコープではない変数、
そして、あなたはそれを使用しようとしています、 あなたがトラブルに取得するつもりです。
そして、ちょうどより一般的には、のは言わせて あなたはint型を言って、Xを使用するようにしてください
Xはあなたがしている、その後、5に等しいです トラブルに実行するつもり。
これについての質問、すみません！
恐ろしい、右に沿って一気飲み。
>> [OK]を、再帰、なぜてみましょうmight-- see--私は、私のオハイオ州ここで行くsch--失わ
念私たちがしている作ります おおよそのスケジュールで。
すべての権利、涼しいです。
[OK]を、再帰、一般的な考え方 再帰、再帰関数
自分自身を呼び出す関数です。
[OK]を、ので、それは私です プログラムの概念の意味
それによって機能が自分自身を呼び出します。
何some--何だろう 再帰を使うのは良い理由は？
とき、それは便利かもしれませんか？
またはいただきましプログラム本当に 再帰に適していますか？
>> 聴衆：バイナリ検索。
>> SPEAKER 1：バイナリ検索 再帰に自分自身を貸します、
あなたはこの問題を持っているので、 小さな断片に分解することができ、
かつ継続的に行います その上に同じアルゴリズム。
これは、より多くの場合に導きます より正確なエレガントなコード。
私たちは一例です バイナリサーチの。
別の例は、マージソートです。
時には、あなたが考えるとき、 アルゴリズム、階乗のように、
それはちょうど、再帰的な感じ？
我々はその階乗を知っているので 5の階乗は4〜5倍です。
だから、あなたが問題を設定するとき その方法は、それだけで再帰的な感じ。
だからだろう それを書くのに最適な方法。
質問？
はい。
>> 聴衆：ベースケースは何ですか？
>> SPEAKER 1：ああベースケースは何ですか？
私は忘れていない、と述べました 基本ケースを含めることができます。
我々は書いていたとしましょう 階乗関数、
私たちは5の階乗をしていました。
そして、我々は5の階乗を知っています 4の5倍の階乗で、
何とか、何とか、何とか、何とか。
停止するとき、どのように我々は知っているのですか？
我々は、我々の方法を知っていますか 実際に数を持っていますか？
我々は階乗呼び続けている場合ので、 その後、我々は正しい、答えを得ることは決してないだろうか？
だから我々はどのように知っているとき 階乗の例で停止。
誰でも、ええ。
>> 対象：1階乗が1の場合。
SPEAKER 1：良いです。
だから我々は知っています。
私たちは、付与され、そのために取ることができます 1階乗は1に等しいです。
だから我々はどこにポイントに取得する場合 私たちは、1の階乗を呼んでいます
ただ先に行くと1を返します。
そして、それはあなたのベースケースです。
私たちがかつて知っているので、我々はそれを押すと、 我々は常にそれをヒットする、私たちはnever--ます
私たちは永遠に続けることはありません。
再帰上の任意の他の質問？
はい。
>> 聴衆：だから、返します 1、それだけで自動的に
右、プログラムを停止しますか？
>> SPEAKER 1：うんそうするときに、 のは言わせif--、復帰1を呼び出し、
のは言わせて2コールの階乗 1の階乗1の階乗、
わずか1をバック手になります。
そして今、2の階乗は、[OK] 2を言うだろう 回1〜2であり、その答えを返します。
はい。
>> 観客は：私たちが心配する必要はありますか 再帰内のスコープについて
あなたはアルゴリズムに行くとき？
>> SPEAKER 1：ああ、はい。
はい、あなたは心配する必要がありません 再帰の文脈でスコープ。
だから、唯一の変数が定義されています 関数の実行中
便利なことを行っています。
うん良い質問。
すべての権利、に沿って動かし続けるみましょう。
私たちはたくさんあるので 材料は、を介して取得します。
私が言ったようにしかし、打つ気軽に 事後営業時間、または私達。
>> これは、本当に迅速なスライドです。
私たちは、について多くのことを学びました 検索とソートされます。
お願い、お願い、お願い、 これらのセクションでは、オンラインであります
私はcs50.net/quizzesで信じています。
だから、このチャートを取りに行くと あなたのレビューシートの上に置きます、
が存在することになるため、 これについての質問です。
それは誤解しないでください。
ただ、非常に迅速に、 何このチャート手段、
それは我々が知っている、ビッグOについて語っています アルゴリズムの上限であるために
実行時間。
そして、我々は、オメガを持っています 下限になるだろう
アルゴリズムランタイムの。
OK？
>> 聴衆：[聞こえません]。
>> SPEAKER 1：うん、最後のものは何ですか？
シータは何ですか？
我々は唯一のつもりwe--場合があります 場合には、このクラスでは気に
ここで、私たちの上限と 私たちの下界は同じです。
うん、それはそれは唯一の時間です このクラスに出てくるつもり。
[OK]を、私は続けるつもりです。
あなたがあなたの写真を撮影していない場合は、 私はこれらがオンラインになります約束します。
>> [OK]を、素晴らしい、構造体。
なぜ我々は構造体をしたいのでしょうか？
便利な理由は何ですか 我々は、構造体が必要になる場合があります。
誰かが何かを叫びます。
さてそれでは、見てみましょう ボード上の例。
我々は扱っているとしましょう これらの学生のすべてと。
我々はのためのプログラムを作っている場合 CS50は、800人のようにあります。
我々はするつもりwrite--する必要があります 多くの情報を処理する必要があります
学生について。
それは、もしいいだろう 我々は可能性基の種類
すべての情報をthis--こと 特定の学生に関係しています
一つのデータ型に変換します。
しかし、我々はデータがありません知っています 右、学生、と呼ばれるタイプ？
私たちは、フロートを持って、整数を持っています、 我々は、文字列、またはcharの星を持っています、
私たちは、学生を持っていません。
>> だから我々は、実際にこの種の定義されて行うことができます 当社独自の構造、生徒を呼び出し、
そして、我々はいくつかを関連付けることができます その構造体と異​​なるフィールド。
したがって、この場合には、してみましょう 私たちは学生を持っていると言います。
我々はケアとの事 約学籍番号です
そして、学生の名前。
そして今、我々はこのIDを関連付けることができます 与えられた学生と、この名前。
それでは、いくつかの例を見てみましょう。
>> [OK]を、私が言うので、ここでは、[OK]を、してみましょう 私たちは学生をしたいと言います。
私は学生1彼に電話。
そして、彼のID番号、 この場合、私たちはアクセスすることができます
ただ、学生の名前を実行して、 私たちがアクセスしたいフィールドに点在しています。
だから、これはただの学生であることを行っています 1ドットIDは、我々は1に等しく、それを設定します。
覚えているので、我々はそれを言いました IDが整数になるだろう。
そして、非常に似た、我々は、これを言うことができます 学生の名前は、デーヴィンになるだろう
例えば。
だから我々はただフィールドにアクセスすることができます このドットを使って構造体の。
その上での質問？
うん。
>> 聴衆：どのような方法があります あなたの変数を保護するには？
変数を保護する方法はあります 外部からアクセスされていますか？
>> SPEAKER 1：とにかくあり あなたの変数を保護します
外部からアクセスされていますか？
ありませんCS50の範囲です。
その他の質問？
うん。
>> 聴衆：typedefは構造体とは何ですか？
各コンポーネントは何を意味するのでしょうか？
SPEAKER 1：ああ、typedefは構造体は何ですか？
各コンポーネントには何が この男の意味ですか？
>> 聴衆：うん。
>> SPEAKER 1：OK、涼しいです。
だから、これは私は、ちょっとコンピュータ、言います 新しい構造を作成します。
そして、私は定義を定義するつもりです 私はそれを使用することができることをそれのために、このような
それはタイプであるか​​のように 私のプログラムを通して。
[OK]をので、私は構造を定義します。
そして、私は今であることを行っています タイプとしてそれを使用すること。
その名前は、学生です。
そして、ここでそのフィールドがあります。
>> 観客は：だからということです typedefは構造体[聞こえませんか]？
SPEAKER 1：次のことができるようにしたい場合 あなたのプログラムを通じて、この構造体を使用し、
そして、CS50の私達のほとんどのケースで 、我々はタイプデフを言わなければなりません。
そして、それはそれはそれを同じように使用することができます 我々はintやfloat型のように使用する方法。
コンピュータ意志 常にそれが何であるかを知っています。
うん。
>> 観客：我々は書くことができます このヘッダファイルで？
>> SPEAKER 1：ああ、申し訳ありません。
我々は、ヘッダファイルでこれを書いていますか？
あなたはあなたのの上でこれを書くことができます プログラム、Cプログラムの一番上にあります。
ええ、それはほとんどのだろう それのための合理的な場所。
そこに戻って。
聴衆：同じ質問なので、主の前に？
SPEAKER 1：右、あなたはこれをする必要があります 誰もがそれにアクセスできることをどこかで。
だからあなたの場合には主の前に、ええ。
聴衆：差があります 上と一番下に学生を入れて？
SPEAKER 1：ああ、あり パッティングの学生の違い
上部または下部のオン？
その質問を保存し、Let-- 我々は、リンクされたリストを取得するとき、
我々はOK、それが表示されますか？
だから、1秒間それにしがみつきます。
私はここで言及したい最後のこと、 代わりに構造を有することがあり、
我々は、構造体へのポインタを持っています 我々は我々の表記法を変更することができます
少しよりよいします。
>> 我々は、我々が持っているとしましょう​​、と言うことができます 学生へのポインタだけではなく、
学生。
我々は、代わりのフィールドにアクセスしたい場合 やって、うまくポインタを間接参照行き、
して、フィールド名にアクセスします。
この表記は少し見えます このドットのスターと厄介。
完全に正しいが、種類 それを行うためのクリーンな方法を、
ちょうどポインタの矢印の名前を言うことです。
そして、それは実際に間接参照を組み合わせました 一つの美しいシンボルにアクセスします。
その上での質問？
>> 観客は：ちょうどその1より多くの時間を言います。
>> SPEAKER 1：1より多くの時間と言います。
>> 聴衆：まさにあなただけ言いました。
SPEAKER 1：確かに、正確に 何私は言いました。
私たちは、学生へのポインタを持っている場合 むしろ学生自体よりも、
私たちがアクセスできる一つの方法をcan-- フィールドは、間接参照であり、そしてその後
アクセス名。
もう一つの、よりよい方法は我々 ちょうどである、それを行うことができます
構文糖を少し、 ちょうどポインタの矢印の名前を行うことです。
そして、それは結合するために起こっています 逆参照およびアクセス。
うん、かなりクール。
大丈夫。
>> それでは、他の質問について話しましょう​​。
ノードにジャンプしてみましょう、 我々が使用するつもりれます
ちょうど秒でリンクされたリストです。
だからここに、あなたがそれに気付くでしょう 単語のノードの両方が、下部にあります
そして、上に。
前に、私たちは学生を定義したところ、 私達はちょうど底に学生を持っていました。
私たちは、上の学生を持っていませんでした。
それはあるかもしれない理由を誰もが知っていますか？
違いは何ですか？
うん。
聴衆：だから、ノードを使用 ノードの定義は、あります
それは、再帰的なことですか？
SPEAKER 1：良いです。
ええ、私たちは私たちのノードには必要あり 他のノードへのポインタを持っています。
だから我々は、このタイプを使用するので それが実際に定義されています前に、
私たちは、一番上にそれを配置する必要があります ちょうどそれはそれが何であるかを知っているので。
聴衆：だからまだ それは、一番下にある必要がありますか？
SPEAKER 1：はい。
聴衆：だから、常に一番下にあります。
SPEAKER 1：常に下部にあります。
したがって、すべてのあなたの意志 一番下にそれを持っています。
その他の質問は？
すべての権利なので、実際に話をすることができます 本当にすぐにリストをリンクしました。
だから、リンクされたリストは、我々はそれらを使用are-- 代わりに、いくつかのケースでは、配列の、
私たちは、配列があることを知っているので、 固定長、リンクされたリストに対し、
私たちは成長し、私たちが望むよう縮小することができます。
だから、これは何の例です。 リンクリストは、次のようになります。
我々が見る必要がどのようなものです リストの先頭。
だからここでリストが開始されます。
そして彼は、それぞれ、ノード 後続のノードは、あります
知るための責任 ここで、次のノードです。
したがって、この場合には、ノード1を格納します 図3は、ここで知ることに責任があります。
3を格納した人です 9がどこにあるかを知るための責任。
そして、図9は、を指すように、誰もがありません。
それは、リストの最後です それはちょうどヌル言います。
OK？
>> 聴衆：これのポイントは何ですか？
>> SPEAKER 1：これのポイントは何ですか？
>> 聴衆：うん。
SPEAKER 1：レッツなぜなら、 我々はいくつかのデータを持っていることを言います。
そして、我々は正確にどのように知りません 多くのデータは、私たちは早めにしたいです。
だから、配列で、どこのは言わせて 最初の行で人々をカウントします。
チャンスはそれを変更するつもりはないです。
私達はちょうど私は、[OK]を、言うことができます サイズ6の配列をしたいです。
しかし、私たちが何かをしたい場合 それは変更になるだろう。
>> たとえば、のは、私がしようとしていたとしましょう 学生を追跡するために
彼らは部屋に入ってくるよう レビューセッションのため。
私はあなたの何見当がつかない 人々は表示しようとしています。
だから私は、データ構造が必要になる場合があります 私は拡大し、縮小することができます。
多分誰かがするので、 多分誰かが来るままにしておきます。
だから、いつでも、我々 ノードを追加または削除することができます。
クール、偉大な質問。
うん。
>> 観客：あなたが使用できる場合 GetStringのようなもの
それはあなたが、より多くのデータを取得させる保ちます あなたもこれを必要としますなぜあなたは、それを必要としますか？
>> SPEAKER 1：なぜだろう ときにリンクされたリストを使用します
あなたはのGetStringのようなものを使用することができますか？
それはいい質問ですね。
Get-- 1のことを覚えています GetStringのdownfalls
我々は非常にをしなかったということです そのメモリを解放するのは良い仕事、
私たちはの束を導入しました メモリは、プログラムの中に漏れますか？
あなたは静的に取ることができます サイズ配列とそれを成長を維持。
しかし、あなたが見つける必要があるだろう メモリ内の新しい場所。
それだけで多くのオーバーヘッドになります。
>> リンクについての素晴らしいことの一つ 配列とは対照的にリストは、配列であります
すべてメモリ内の同じ場所にあります。
それは、連続的である必要があります メモリのチャンク。
リンクリスト、2と3場合があります 全く別の場所にあります。
同様に2はこっちで、3はこっちです。
そして限り、彼らが持っています お互いへのポインタ、それは大丈夫です。
私たちはそれらを見つけることができます知っています。
あそこ質問？
>> 観客：のGetString関数であります CS50ライブラリで、右か？
これは、実際のプログラムには存在しません。
>> SPEAKER 1：正しいです。
右、それは他のことです。
GetStringは存在しません CS50のコンテキストの外側。
うん。
>> 聴衆：だからという事実を行います 二人は遠く離れて、本当にすることができ、
その影響をの効率化を行います リストの要素にアクセスしますか？
SPEAKER 1：それは素晴らしい質問です。
質問は、それが影響を与えない、でした アクセスの効率性
リスト内のこれらの異なる要素。
実際には、はい。
私たちが知っているのでif--はしてみましょう 私たちがアクセスしたいと言います
配列の2番目の要素、我々は知っています 私達はちょうど、アレイブラケット1を行うことができます。
それは常にに起こっています 同じ場所です。
しかし、我々はその3を取得したい場合は、 私たちは3ということを取りに行く、と言うことはできません。
私たちは言っている、[OK]を、で開始 リストの先頭
そして今、我々は実際に持っています 私たちまで、ウォークスルーします
我々が興味を持っている番号を見つけます。
>> この場合のように、我々はOK、と言います これは最初の番号です。
だから基本的に、それはインデックス0です。
今、私たちは第二の数を見つける必要があります。
それはインデックス1です。
だから、実際にはto--起こっています アクセス、N個の時間を取るために起こっています。
クール、大きな古いN.うん。
>> 聴衆：リストのそれぞれは何ですか？
彼らはそれぞれの配列、または何ですか？
SPEAKER 1：それは素晴らしい質問です。
のそれぞれがどのようなものがあります 私が描いた構造？
彼らは、ノードです。
したがって、これらのほとんどの各 構造は、2つの部分があります。
これは、保持する整数を持っています。
これは実際のデータです それは上に保持していること。
それが有用な部分のようなものです。
そして、これは何ですか それにリンクされたリストになり、
それは、次のノードへのポインタを有しています。
素晴らしい質問です。
すべての権利なので、のは非常に見てみましょう すぐに何のいくつかの例を見て
我々は、リンクされたリストを行う可能性があります。
>> だから、1つの非常に簡単な例であり、 我々が検索を実行するとします。
検索はどのようなことはできません 我々は、リンクされたリスト上で行いますか？
>> 聴衆：バイナリ。
>> SPEAKER 1：バイナリ。
なぜ我々は、バイナリ検索を使用することができないのですか？
>> 聴衆：[聞こえません]。
SPEAKER 1：右、バイナリであるため 検索、我々は実際に頼らなければなりませんでした
私たちはジャンプができること 任意の時点での配列に。
私達はちょうど行く、と言うことができます 中央の要素に。
我々が言ったように、ここでは 少し早く、
私達はちょうどにジャンプすることはできません 中央の要素。
いずれかを見つけるために 要素、実際に我々
私達の全体のリストを歩かなければなりません。
>> だから我々は、検索を実行したい場合、 私たちができる最善のは、ちょうどリニアサーチです。
私たちは、頭で開始 我々はしているとしましょう​​check--
私たちが先頭に開始9--​​を探して。
私たちは、これが9である、と言いますか？
いいえ。
この9か？
いいえ。
この9か？
はい、我々はそれを見つけました。
[OK]を、それがすべてのことです。
ここでは擬似コードの少しです。
私はあなたのためにこれを残すつもりです 人は、自分でオーバー解約します
我々は実行しているという理由だけで 時間の短い少し。
>> 挿入について話すことができます。
我々は、本当にクールなデモを見ました 我々が言った講義では、この、
[OK]を、私たちはどこでこのリンクリストを持っています 誰もがお互いを指しています、
そして、誰かがステージに上がっています。
我々はそれを挿入するにはどうすればよいです 私達のリンクリストへの人？
まあ、間違った方法は、行うにはどの 私たちが最初に見たものと思いますが、
時の人であります 自動的にフロント
新しい人に指摘しました。
そして、我々は一種の放棄しました リストの後半、右？
私たちはどこかわからないので それはもはやメモリ内にあります。
だから、について非常に注意します 私たちは物事を挿入する順序。
>> だからここに、我々はしたいとしましょう 私たちのリストの先頭に1を置きます。
まず、我々は、1ポイントを持っています 二element--または要素
それは1が含まれています。
だから、私達はちょうど私たちがいないなら、それを行います 後半を失うつもり。
そして今、私たちは、1頭のポイントを持つことができます。
だから、再び、これは単なるです 超ハイレベルのような。
これは、我々はノードを挿入する方法です。
私たちはたくさんあり​​ます 擬似コードhere--申し訳ありませんが、
私は、なぜ私は知りません 擬似コードを呼び出します。
これは、実際のコードです。
あなたは後でそれをチェックアウト行くことができます。
>> すべての権利、非常にしてみましょう それ以上の質問をquickly--
私の前にリンクされたリストに カップルの他のデータの上に移動
私たちの最後の10分間での構造。
>> 観客：我々は今する必要がありますか テストでそれを書くためにどのように？
>> SPEAKER 1：私たちはどのようにto--知っている必要がありますか
>> 対象：テストでそれを書きます。
>> SPEAKER 1：我々は必要なのですto-- あなたが準備する必要があります
インサートを書くために、削除し、 テストにリンクされたリストを検索します。
それは我々のものです あなたがする期待できます。
ちょうどその上に行きます。
あなたは上の任意の質問がある場合 コー​​ドは、あなたのTFメールを撃ちます、
営業時間に来ます。
多くの時間はまだあります 勉強する、心配することはありません。
すべての権利、他の リンクされたリストについての質問？
はい。
>> 観客：あなたが使用していないのであれば 右側のいずれかに行くためのポインタ
あなたは、ポインタを使用する前に 左の上の1つ、それはです
削除の同等 すべて、右？
SPEAKER 1：うん。
聴衆：[聞こえません]。
SPEAKER 1：右、私たちがすることができないので それを得る、それは実際にはさらに悪いです。
だけでなく、私たちが知らないので、 それがどこにあるか、私たちはもはやそれを使用することはできません、
しかし、私たちではありませんwe've-- もうそのメモリを解放。
だから、ただ周りではなく、ぶら下がっています 我々はそれを見つけることができないために有用です。
うん、クールな質問。
>> すべての権利、のスタックについて話しましょう​​。
我々は非常に迅速にスタックを見ました。
彼らは最後に最初のものです アウトデータ構造。
だから我々はアネンバーグでスタックを考えます 私たちは上のものをスタックトレイ。
そして、あなたはするつもりなら あなたがしている、トレイを取得してきます
常に上の1つを取るつもり 最もrecently--でトップ、
我々ほとんどの事これは 最近スタックの一番上に置きます。
だから、一種のこの種のを考えることができます あなたはスタックを考えているときに、視覚的。
そして、私たちは何かをポップしました スタックの先頭オフ。
>> 我々はああare--、と言葉ならば、我々 我々は、これらのデータについて話しているときに使用
構造は、通常、私たちの場合 スタック上に何かを置きます、
私たちはそれをスタックにプッシュしていると言います。
そして、我々はスタックから何かを取る場合、 我々はスタックからポップしていると言います。
あなたが実装しようとしている場合 間違いなく私stack--
あなたがしているout--試してお勧めします を追跡するためにするつもり、
例えば、あなたが、配列を使用しているとしましょう​​。
我々が話をした私は、講義で知っています 配列の両方を使用する方法について
またはスタックを実装するためにリストをリンクしました。
あなたが使用している場合 配列は、あなたがkeep--する必要があります
言い訳は、私たちは記録しておく必要がありme-- サイズと容量の。
だから、最大数 私たちのスタックが保持できること。
スタックに関する質問？
>> 観客：違いは何ですか サイズと容量と？
SPEAKER 1：との違い サイズと容量、素晴らしい質問です。
それでは、私たちがしているとしましょう 配列を使用して、我々
10整数の十分なスペースを割り当てます。
そして、我々はそれを埋めるために開始します。
そして、我々は、で物事をプッシュ 私たちは物事をオフにポップ。
我々は最大のトラックを維持したいです 我々が保持できる数は、それが容量です。
そして、我々はを追跡したいです 我々が持っている現在の数は、そのサイズです。
良い質問。
スタック上の他には？
すべての権利、話をしましょう 驚きについて、キューに入れます。
>> 最後に最初のものであるスタックとは異なり、 うち、これらは先入れ先出し、です。
だから、これはラインのlike--と思います。
アップルで並ぶと考えて どのような製品を得るために保管してください。
また、行の最初の人はすべき 助けた初の人物です。
プッシュですので、最初のものです このポップの最初の事。
クール？
非常にsimilarly--ああ、言葉はその 我々は、プッシュとpop--の代わりに使用します
これは私がちょうど使用し、 私は、私たちが言うIS sorry--よ
我々はに何かを入れている場合 キューは、我々はそれをエンキュー言います。
私たちは外の何かを取っている場合 キューは、我々はデキュー言います。
これ。
私はそれらを発音することができます 間違った、しかし、あなたのアイデアを得ます。
そして再び、ちょうどスタックのように、 私たちは、配列としてこれを実装している場合、
私たちはを追跡する必要があります サイズ、容量、およびヘッド。
私は頭とはどういう意味ですか？
なぜ我々は維持する必要があります ヘッドのトラック？
>> 観客：それはあるので あなたのリストの先頭です。
SPEAKER 1：うん、基本的にヘッドがあります ここで私たちのキューの始まりです。
私たちが知っているので、スタックとは異なり、which-- 私はこれに直面しようとするつもりですway--
我々はそれが常にに起こっていることを知っています このように縮小し、このように成長します。
キュー、人々は端に来ます そして、、最初から離れます
私たちはトラックを維持する必要があります スタートがどこにあるの。
それは私たちがする必要が何を意味するかです ヘッドがどこにあるかを追跡します。
クール？
大丈夫。
8分、カップル より多くのトピックは、我々はそれを行うことができます。
>> すべての権利、ハッシュテーブル。
我々は非常に簡潔に話しました ハッシュテーブルについて。
クイズでは、あなただけに必要 高いレベルでそれらを理解しています。
基本的な考え方は、このデータを持っています。
そして、我々はだ時間にアクセスしたいです リンクのようなものよりも速く
リスト。
我々が言ったので、私たちはいた場合 リンクリストを検索、
それは、N個の時間がかかることがあります。
でも取ることができますアクセス リンクされたリスト内のN個の時間。
ハッシュテーブルは、私たちすることができます私たちに道を譲ります より迅速に物事をアクセスし、より
すぐにせずに、物事を検索 配列の制約を持ちます
ここで我々はサイズが固定されています。
>> だから我々はどこにデータ構造を考え、 我々は、データ構造にそれを置く場所
これに依存しています 魔法のハッシュ関数。
この場合には、魔法のハッシュそう この関数は、単に単語を取っています、
最初の文字が何であるかをチェックし、 その後、ちょうどアルファベット順にソートします。
だから我々は、本質的にそれらを置きます 別のバケットに。
我々はバナナを見たとき、私たちは言います、 [OK]を、のがBバケツに入れましょう。
我々は、Appleが表示されたら、してみましょう Aのバケツに入れて。
我々はアプリコットを見た場合、してみましょう Aのバケツに入れました。
OK？
>> だから私は、私を探していたと仮定しfor-- 知らない、他​​の果物は何ですか？
私はオレンジを探していたとします。
私はどこになりますか？
Oバケットで。
ええ、唯一の場所があります そのオレンジは、OKでしょうか？
だから私は何が起こるかを先に述べました if--よく私は、以前に述べました
我々はアプリコットin--を置くとしましょう​​けど 本当に事実に対処すること、ああ、いや、
私はベリーを入れていた場合、それはです バナナと競合する予定。
どこにあるのならば、我々はそれを置きます すでに私たちのテーブルで何か？
さて、私たちはカップルのオプションがあります。
>> オプション番号1は線形であります 基本的に意味し、プロービング、
それでは、私が試してみたいとしましょう ああ、いや、ベリーを入れて、なるほど、
すでにそこにバナナ、 私はOK、と言うてみましょう
私は、次の利用可能なスポットを探します。
だから私は、ああ、私は言う、歩きます Dバケットには何もありません。
私は本当にすべての果物を考えることはできません それは、文字Dで始まります
私はちょうどそこにベリーを入れるつもりです。
ドリアン。
[OK]を、そこだからそう そこには何もありませんまだ、
私もちょうどその場所を使用する場合があります。
それの欠点は何ですか？
>> 観客：それは順不同でです。
>> SPEAKER 1：申し訳ありませんか？
観客：それは順不同でです。
>> SPEAKER 1：それはout--です 右、我々は終わるかもしれません
in--されていないものと 方法で、バケットに格納されています
我々は彼らがあることを期待しています。
だから我々は、検索された場合 ベリーのために、私たちが言った前に、
ああ、私たちは1つのバケットで見ることができます。
それだけで1つのバケットである可能性があります。
しかし、今、本当に、それは可能性があり すべてのバケットで、右か？
>> [OK]を、ここでは別のオプションです、 別々chaining--
これは、我々が行っている考えであります Pに少し後で使用するために5を設定します。
むしろちょうど持っているよりも 各バケット内の1つのスペース、
私たちはそれぞれのバケツを持っていない理由 リンクリストへのポインタで？
我々はOK、バケツがあると言う場合には A.で始まるすべてのため
そして、ちょうどリンクがあるように起こっています A.で始まる果物の一覧
私たちは新しい果物を取得する場合それでは、言わせて 我々はリンゴを持って、我々はアボカドget--、
我々はアプリコットを取得しましょう​​、 どのように我々は、リストに入れますか？
まあ、我々は0をバケットに行くだろう、と私たちは思います ちょうど私たちの気に入っリストに挿入し、
そのような単純な。
>> 今、私はバケツを言い続けます。
私たちはこれを実装することができ いくつかの方法です。
このこと一つの典型的な方法 画像の種類は、示唆しています
多分の配列をしています リンクされたリストへのポインタ。
それは私達ができる一つの方法です ハッシュテーブルを実装します。
聴衆：あなたは別のものを必要とするだろう リストバナナとベリーが出ているので、
オーダーの？
SPEAKER 1：あなたのだろう あなたはだろう、ああneed--
バナナので別のリストを必要とします そして、ベリーの順序がありますか？
この場合、我々のハッシュ関数 これはどこのものを置くことを教えてくれる
二番目の文字を気にしません。
これは、アルファベット順を気にしません、 それは最初の文字だけを気遣います。
質問？
>> 聴衆：それの定義は何ですか 機能、そして何が見えますか？
SPEAKER 1：ああ、良いです。
[OK]を、私たちはする必要はありません このクイズのためにあまり心配。
だから私はスライドに入れませんでした。
我々は導入するつもりです Pのためのそれには、5を設定します。
しかし、基本的に、それは言う、与えられました 私はそれを置く必要があり、新しい要素、？
あるいは、のは私が探しているとしましょう 要素、それはあるかもしれませんか？
うん、偉大な質問。
>> [OK]を、非常に迅速に、木と試みます。
だから、木はただの一種であります 編成されたデータ構造。
そして、私たちはたくさんの写真を参照してくださいするつもりです それが、これはスーパー明らかになります。
そして私達がクラスで見たトライ、 木の非常に特別な種類です
それは基本的に同じように動作し マルチレベルのハッシュテーブル。
それは超クールです。
私達はちょうど秒でそれを見るつもりです。
すべての権利は​​、そのようにしてみましょう 最初の木について話しています。
だから、これは実際の典型的な例であります 我々はいくつかの階層を持っている木、。
あなたは1つがであることを確認します 非常に上、右？
そこだからと私はトップを言うことができます 私たちのため明らかに発注
これらの矢印がダウンして行く必要があります。
だから、一番上にあるもの、 私は、ルートノードことを呼び出します。
だから、1はルートノードです。
そして、一番下にあるもの、 これは、それらをオフに来て何もありません、
私はこれらがリーフノードであると言います。
だから8,9 5、6、7、[OK]をクリックします。
そして、通常の用語の我々 1が3の親である、と言うことができます。
だから、来ることです それ以上のレベル、およびそれへのポイント。
そして、図3は、1の子です。
それは、その1点にことです。
質問？
>> 聴衆：あなたが戻って行くことができます 前のスライド、してください？
>> SPEAKER 1：私は戻って行くことができます 前のスライドに？
確かに。
このに関する質問？
それとも、ただそれを見てみたかったですか？
聴衆：私はちょうどそれを取得できませんでした。
>> SPEAKER 1：OK、クール、うん。
これらは、すべてのように、オンラインではないでしょう すべての単語を心配。
との利益のために 時間は、私は行くつもりです。
それはいいですか？
驚くばかり。
うんいいね。
それでは、について話しましょう 非常に具体的なkind--
私たちはこれらの一般的なを持っています 木の構造、
これは私たちを可能にするだけのものです 階層的にランクどのような種類のものに。
>> バイナリツリーはどこにすべてのものです ノードは最大で二人の子供を持っています。
OK？
そして、私はOK、その結果はそう言いました この記述に合うように。
私は、ノードではなく、二分探索木と述べました。
二分探索木は何ですか？
これは、並べ替えています。
だから、あなたが知っている中で、その 二分探索木、
tree--すべてにすべてのもの 左ノードに小さい場合、
そしてすべてに ノードは、右大きいです。
だから、これは二分探索木ではありません。
これは単なるバイナリツリーです。
だから我々はの大きなカテゴリを持っています 木、わずかに小さいカテゴリ
二分木の、検索によって A--二分探索木。
クール？
大丈夫。
>> のそして今、最も楽しいです すべて、私たちは私たちの試行を持っています。
君たちは講義にこの写真を見ましたか？
ええ、それは超おなじみのはずです。
のは、見てみましょうどのように我々は、かもしれません 実際にこれを実装しています。
あるいは実際に、見てみましょう、 ことも出てくるのでしょうか？
いいえ。
すべての権利、私たちもする必要はありません その低レベルのものを心配します。
私たちは多くの時間を持つことになります その後にアドレスPが5を設定します。
しかし、今のところ、ちょうど非常に高いレベル、我々 これは、それがどのように見えるかであることを知っています。
私たちは、の一種としてそれを説明しました マルチレベルのハッシュテーブル
where--このストアを何？
これは、名が格納さ 私たちが実際にすることができます科学者
だけの種類に従って、探し 異なるハッシュテーブルダウン、大丈夫？
>> そしてこの目的は、理論的には、あります 彼らは一定の時間ルックアップを提供しています。
私はそれを確認したいのであれば、 例えば、someone--だ人
マンデルは、この中であること トライ、私は非常に迅速にできました
linear--に私はで、ごめんなさい 一定時間、把握
かどうか、それはトライでです。
しかしconが、これはどのように大きなを見ています。
私たちも、それを保存していません 多くのデータ、それは巨大です。
だから、一つの大きな詐欺はそれということです 大量のメモリを使用しています。
はい。
>> 聴衆：なぜそれは提供しません 一定時間、正確に？
>> SPEAKER 1：1つのより多くの時間？
>> 観客：直感は何ですか それは一定の時間を提供し、なぜか？
>> SPEAKER 1：優秀な質問。
なぜそれが一定の時間を提供していますか？
だから我々は、してみましょうされて何ができますか 我々はマンデル探していると言います。
我々は開始したいことを知っています M.の最初のレベルで
私たちは、Eそうにそれをフォローしたい知っています それは正しい一歩、2つの手順を取るのか？
我々はDにそれに従うNにそれに従います 我々はLにそれに従うEにそれに従ってください
そして次の事、私たちはチェック このデルタsays--はい、それはだと言います
私たちのテーブルです。
それは言葉です。
それが私たちのトライで有効なエントリです。
だから、[OK]を、言っています、 それは7つのステップを取りました。
しかし、我々はより多くの無数のように追加した場合 このデータ構造への科学者、
我々はチェックする必要はありません 膨大な数より多くの事。
私たちは今まで取る必要があるとしています 7つのステップ、人のの長さ
名。
>> だから、私たちは考えたいです ランタイムのと仮定し、として
我々は、我々のサイズを大きくします データ構造、どのくらい長く
それは取るつもりですか？
ここでは、束を追加する場合 より多くの科学者たちは、それは問題ではありません。
それはまだ取るつもりです 同じ時間。
これは、一定の時間です。
はい。
>> 聴衆：どのようにしていない知っています 他の番号の上を走査するには？
SPEAKER 1：どのように私は知っていますかto--
観客：あなたはあなたが行く知っていますかのように ストレートMからEまでとしないように、Mか？
SPEAKER 1：ああ、してください。
私は私が知っていたので、 マンデル単語を探して、
私はちょうどそれは、M-Eであることを知っています。 ええthat--だから、先に行きます。
観客：あなたが持っていません 他の文字を見て
[聞こえない]の残りの部分？
>> SPEAKER 1：ああ、私は持っていません 偉大the-- OK、を見て。
これは素晴らしい質問です。
それは我々がそれを実装する方法によって異なります。
私たちは同じようにそれを実装する場合 一連の配列のような
ここで我々は、Eがあることを知っています 常に位置0、
私は知らない、何でも 数指数はです。
ええ、私たちはただ一定行うことができます 時間、、、やるんんありません。
クール。
あそこ質問？
>> 観客は：一定の時間です リアルタイムと同じもの？
SPEAKER 1：時定数 同じことは、リアルタイムのですか？
私は本当の時間は本当にわかりません。
聴衆：ような時間 文字通り二進みます
秒単位であることとは対照的に、 独立変数。
>> SPEAKER 1：ああ、ええ、あなたは そのように考えることができます。
換言すれば、依存ではありません データ構造のサイズ。
それはそれを考えるための方法です。
その他の質問は？
たぶんでは初めてで 歴史は、私たちは時間通りに終了しました。
ご質問があれば、感じます セクションに移動し、私たちを尋ねに来て自由に、
あなたのTF、オフィスに話します 営業時間は8時00分と午前8時30分です
そう月曜日と火曜日は11:00、へ それは少し違う時間です、
あなたはそれを注意していることを確認します。
うん。
>> 観客は：私たちが知っている必要がありますか コマンドライン引数のようなもの、
ダッシュLS、どのようなダッシュ？
>> SPEAKER 1：コマンドライン 引数、およびLinuxのコマンド、
はい、あなたはそれらを知っている必要があります。
それはレベルの一種のようなものですVery-- 私たちはセクション0に覆われたもの、
限りLinuxなどのコマンドが行きます。
>> 聴衆：アネンバーグで時間はありますか？
SPEAKER 1：営業時間は、私はないんだけど 彼らがどこにあるかを完全に確認してください。
しかし、あなたは確認することができます ウェブサイトは、それはあなたを教えてくれます。