>> [รูปแบบดนตรี]
>> ลำโพง 1: สวัสดีครับทุกคน
ยินดีต้อนรับกลับไปยังส่วน
น่ารักวันแทนดูซึ่งเป็นเหตุผลที่ฉัน ตรวจสอบว่ามีเพียงสี่ของคุณมาที่นี่
และไม่แพ็คตามปกติของเรา
ฉันได้รับการป่วยวันหยุดสุดสัปดาห์นี้
ดังนั้นผมจึงไม่ได้มีการดาวกระจายสำหรับพวกคุณ
และผมอาจจะเริ่มมีอาการไอ ชะมัดตลอดนี้
ดังนั้นเพียงแค่อดทนกับฉัน
ฉันจะพยายามจริงๆ และได้รับผ่านทางนี้เป็นครั้งแรก
แต่ก่อนที่จะมีการโจมตีไอ
แต่เพียงเป็นเรื่องง่ายกับฉัน เล็ก ๆ น้อย ๆ bit-- นั่นคือทั้งหมดที่ฉันขอ
>> ดังนั้นวาระการประชุมของเราสำหรับ today-- เพียง reminder-- คำถามของคุณในสัปดาห์หน้า
ผมบอกคุณเมื่อสัปดาห์ที่แล้วนี้จึง จะไม่ติดต่อคุณปิดป้องกัน
ดังนั้นฉันเตือนให้คุณอีกครั้ง
สัปดาห์ถัดไปของการทดสอบของคุณ
ไปสิ้นสุดที่สัปดาห์ถัดไป ส่วนจะมากขึ้น
เเล้ผมจะพยายามและการทำงานในการตรวจสอบบางอย่าง
ดังนั้นถ้าพวกคุณจะทำได้ ช่วยให้ฉันออกโดยการส่งฉัน
สิ่งที่คุณพอใจ กับที่คุณกังวลเกี่ยวกับ
หัวข้อที่คุณต้องการสำหรับ ฉันจะครอบคลุมที่ต้องการจะดี
ดังนั้นผมสามารถลองและการทำงานของพวกเขา ในส่วนของเราในสัปดาห์หน้า
หรือส่งคุณวัสดุพิเศษหรือเตรียม ที่คุณอาจไม่ได้รับที่อื่น ๆ
>> ใช่!
คนอื่นจะมา!
ผมคิดว่าผมทำที่ผ่านมาไม่ดี สัปดาห์ที่ไม่มีใครอยากที่จะกลับมา?
ฉันกลัว
ดังนั้นอีกสามสิ่ง ที่เรากำลังจะไปมากกว่า
มีการเปลี่ยนเส้นทางแฟ้ม I / O และ แล้วชี้และหน่วยความจำแบบไดนามิก
ฉันแน่ใจว่าคุณกำลังทั้งหมดสุดตื่นเต้นเกี่ยวกับ pointers-- หัวข้อที่ชื่นชอบของทุกคน
เพื่อให้ง่ายต่อการทำความเข้าใจ
ผมมั่นใจว่าพวกคุณทุกคนมีที่ใช่มั้ย?
>> ดังนั้นสิ่งแรกที่แรก redirection-- นี้เป็นเพียงวิธีการ
ในการควบคุมวิธีการที่คุณใส่ สิ่งที่เป็นโปรแกรมของคุณ
วิธีการที่คุณสิ่งที่เอาท์พุทจากโปรแกรมของคุณ
วิธีหลักที่คุณผู้ชาย ได้รับการมีปฏิสัมพันธ์กับมัน
เป็นเพียงผ่านการออกมาตรฐาน ด้วยหน้าจอการพิมพ์ของคุณที่นี่
แต่มีวิธีการที่จะ pipe-- ที่เราเห็นที่นี่
เป็นหนึ่งในชนิดคำสวยของเรา ของท่อว่าข้อมูล
หรือข้อมูลเป็นไฟล์จากไฟล์ที่
มันเป็นวิธีการที่แตกต่างกันเพียง ได้รับสิ่งที่เข้ามาในโปรแกรมของคุณ
และออกจากโปรแกรมของคุณแทน เพียงแค่พิมพ์พวกเขาไปยังหน้าจอนี้
หรือสิ่งที่ป้อน จากบรรทัดคำสั่ง
>> ดังนั้นคนแรกคือเล็ก ๆ น้อย ๆ มากกว่าตก
ดังนั้น output-- มันก็พิมพ์เอาท์พุท ไฟล์แทนหน้าจอของคุณ
ดังนั้นถ้าคุณมีอะไรบางอย่างที่พิมพ์ "สวัสดีชาวโลก" ไปที่หน้าจอ,
ถ้าคุณใส่มันแทน เพื่อ output.text ที่
สร้างแฟ้มที่เรียกว่า output.text นี้
และเมื่อคุณเปิดมันก็จะ บอกว่า "สวัสดีชาวโลก!" ในนั้น
นี้จะมีประโยชน์สุด ถ้าคุณมีตันของข้อผิดพลาด
จริงอย่างที่เราเห็นในนี้
ถ้าคุณทำสองตกก็จะ พิมพ์ข้อความผิดพลาด
>> ดังนั้นหากคุณกำลังมีปัญหากับ รวบรวมมันมีจำนวนมากของข้อผิดพลาด
และคุณได้รับจมลงในความพยายามที่ เพื่อเลื่อนไปในบรรทัดคำสั่งของคุณ
ผ่านทุกพวกเขาที่คุณสามารถ เพียงแค่พิมพ์พวกเขาไปยังแฟ้ม
เปิดแฟ้มเพื่อที่ว่าคุณ สามารถเลื่อนได้ง่ายขึ้น
ที่จริงผมใช้ว่า จำนวนมากเมื่อผมแก้จุดบกพร่อง
181 psets ของฉันสำหรับการเรียนรู้ของเครื่องจักร
ดังนั้นมันจะมีประโยชน์สุดในภายหลัง
นอกจากนี้ยังเป็นประโยชน์ในกรณีที่คุณมีโปรแกรม ว่าอาจจะมีการสร้างห้องสมุด
หรือการสร้างชุดบาง ของสตริงและคุณ
จะต้องสามารถที่จะเห็นว่า มันสร้างได้อย่างถูกต้อง
นี่คือวิธีการที่จะทำเช่นนั้น
>> ดังนั้นถ้าคุณพิมพ์พวกเขาไปยังแฟ้มคุณ ได้ง่ายขึ้นสามารถตรวจสอบพวกเขาใช่มั้ย?
เมื่อเทียบกับความพยายามที่จะเลื่อน ผ่านบรรทัดคำสั่งของคุณ
และแล้วสิ่งหนึ่งที่จะต้องทราบ เป็นที่ที่มีเพียงมากขึ้น
กว่าตก, ถ้าคุณเขียน ไปยังไฟล์ที่ exists-- แล้ว
ดังนั้นเช่นถ้าเราวิ่งเป็นครั้งแรกนี้ เวลาที่เรานำไป output.text,
แล้วเรามีโปรแกรมที่สอง ที่พิมพ์นี้เป็นโปรแกรมสอง
และทำมากกว่าที่จะ output.text, มันจะเขียนทับ that-- ดังนั้น
เขียนทับสิ่งที่เคยอยู่ใน ไฟล์ที่จะเริ่มต้นกับที่
>> ดังนั้นถ้าคุณต้องการที่จะผนวก ไปยังไฟล์ที่เราเห็นที่นี่
คุณเพียงแค่ทำสองมากกว่าสัญญาณ
และมันจะผนวกกับมัน
มันจะไม่เขียนทับ
ดังนั้นหากคุณต้องการที่จะทำงานหลาย ๆ โปรแกรมและชนิดของให้
ติดตามสิ่งที่ทั้งหมดของพวกเขา กลับมาให้คุณในแฟ้ม
นั่นคือวิธีที่จะทำมัน
ถ้าคุณไม่สนใจสิ่งที่อยู่ในไฟล์ของคุณ และจะได้รับอนุญาตให้ถูกเขียนทับ
คุณก็สามารถใช้มากขึ้นกว่าเดียว
ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่
>> ผู้ชม: เช่นเดียวกับจุดเฉือนสวัสดีมากขึ้น กว่าข้อความจุดเอาท์พุทเช่นเดียวกับครั้งที่สอง
มันจะเพียงแสดงบนเอาท์พุท จุดข้อความ time-- ที่สอง
>> ลำโพง 1: ขวา
ดังนั้นมันจะเป็นเพียงสมบูรณ์ เขียนทับสิ่งที่อยู่ที่นั่นจะเริ่มต้นด้วย
ถ้าไฟล์นี้ที่นี่ output.text แล้ว
มีอยู่โดยทั่วไปสิ่งที่คุณเรียก อีกครั้งกับซิงเกิ้ลมากขึ้น
กว่าที่คุณเพียงแค่สามารถคิดว่ามัน เหมือนมันถูกแทนที่ด้วยไฟล์
เช่นเมื่อคุณประหยัดคำ เอกสารและคุณจะบันทึกเป็น
และคุณใช้ชื่อเดียวกันและ มันสมบูรณ์เขียนทับพูดไป
นี่คือการเรียงกันของสิ่ง
ใครมีคำถามใด ๆ เกี่ยวกับการ เพียงแค่แสดงผลไปยังไฟล์?
น่ากลัว
>> ดังนั้นเห็นได้ชัดถ้าคุณย้อนกลับ ทิศทางที่ลูกศรที่สามารถทำข้อมูล
ดังนั้นเมื่อพวกคุณมี เช่นซีซาร์หรือ VISIONEER
และคุณมีบางสิ่งบางอย่างเข้า คุณมีอาร์กิวเมนต์บรรทัดคำสั่ง
ที่จริงใส่มัน
นี่คือวิธีการที่จะทำเช่นนั้นอีก
ดังนั้นแทนที่จะรอ สำหรับจอพร้อมรับคำสั่ง
เช่นเมื่อคุณถามหาคุณ ข้อความในซีซาร์หรือ VISIONEER,
ถ้าคุณมีไฟล์ข้อความ ที่มีข้อความของคุณ
คุณก็สามารถพิมพ์ลงที่
>> ดังนั้นถ้านี้เป็นเหมือนจุดเฉือนซีซาร์ 3 น้อยกว่าป้อนข้อความลูกศรซึ่ง
คือข้อความของคุณที่ จะทำงานได้ดี
เมื่อโปรแกรมซีซาร์ของคุณจริง ขอข้อมูลจากผู้ใช้
แล้วมันจะมีมันเพราะ คุณได้พิมพ์ลงในไฟล์นี้
นั่นเป็นเพียงวิธีการอื่น
เพียงแค่ย้อนกลับของ output-- ใส่เพียงข้อมูลของคุณ
>> แล้วสุดท้ายคือท่อ
ดังนั้นเย็นสวยหนึ่งนี้
เพราะมันช่วยให้คุณสามารถ จะออกของหนึ่ง
โปรแกรมและนำไปใช้เป็น การป้อนข้อมูลไปยังโปรแกรมอื่น
ผมไม่ทราบว่าถ้าใด ๆ ของคุณ เล่นกับถอดรหัส
CS50 ที่อาจมี ให้คุณ แต่มันจะ
ช่วยให้คุณสามารถเก็บตัวอย่างบางส่วน ไฟล์พิมพ์ลงในการเข้ารหัสของคุณ
แล้วจากนั้นพิมพ์ ที่เป็นถอดรหัสของคุณ
เพื่อให้แน่ใจว่ามันปรากฏออกมาเหมือนกัน
ดังนั้นจึงเป็นชนิดเช่นวงสามทาง
ไปมัน
>> ผู้ชม: ถ้าโปรแกรม มีปัจจัยหลาย
จะมีวิธีการบอกว่าการทำงานของสัญญาณ ที่จะใช้แฟ้มข้อความหรือส่งออกหรือไม่?
>> ลำโพง 1: มันมีหลายปัจจัย
สิ่งที่ยื่น input-- ของคุณเมื่อมัน ขอใส่เป็นครั้งแรกที่มัน
จะสมมติผมคิดว่ามันเป็น จะท่อในไฟล์ทั้งหมด
ดังนั้นถ้าคุณมีปัจจัยหลายคุณ จะได้รับการท่อในหลายไฟล์
ดังนั้นถ้าคุณกำลังขอให้สำหรับข้อความ สามครั้งในรหัสของคุณ
คุณกำลังจะได้รับการวาง ในสามไฟล์ที่แตกต่างกัน
และจะได้รับบ้า
และคุณไม่ควรจะต้อง กังวลเกี่ยวกับว่าตอนนี้
แต่นั่นเป็นความคิดที่
>> เพื่อใช่เป็นเพียงท่อส่งออกของหนึ่ง โปรแกรมใช้ใส่ลงไปในที่อื่น ๆ
ทุกคนที่ดีมี?
เย็น
ตกลง
คุณอาจจะไม่ต้อง ที่จะทำมากเกินไปกับมัน
แต่คุณควรจะเข้าใจ วิธีที่คุณสามารถใช้นี้
และมีบางกรณีที่ คุณอาจต้องการที่จะใช้มัน
>> ดังนั้นไฟล์ I / O-- ฉันรู้ว่าสิ่งที่คุณกำลัง saying-- เรากำลังใช้ในการอ่านจาก
และการเขียนไปยังหน้าจอของเราที่นั่น ซึ่งเป็นมาตรฐานในการออกมาตรฐานและ
และนั่นคือสิ่งที่พวกคุณได้รับ ทำตั้งแต่จุดเริ่มต้นของการเรียนที่นี่
แต่คุณยังสามารถอ่านและเขียนไฟล์ ซึ่งเป็นไฟล์ I / O-- เพื่อยื่นเข้า
เอาท์พุทคือทั้งหมดที่มันยืนสำหรับ
ดังนั้นนี้โดยทั่วไปหมายถึง คุณสามารถจัดเก็บข้อมูลของคุณตอนนี้
>> เมื่อคุณเพียงแค่พิมพ์ไปยัง หน้าจอมันหายไปโดยทั่วไปใช่มั้ย?
ทันทีที่คุณทำ "สวัสดี โลก "และเรียก" สวัสดีชาวโลก "
มันพิมพ์ "สวัสดีชาวโลก" ไปที่หน้าจอ
แต่คุณไม่สามารถทำจริงๆ อะไรกับมันจากที่นั่น
ถ้าคุณเก็บไว้ในข้อความ ไฟล์แล้วก็
คุณมีข้อมูลที่คุณได้รับอนุญาตนี้ ที่จะจัดการหรือใส่ลงในแฟ้ม
หรือวางไว้ในโปรแกรมในภายหลัง
เหตุผลหนึ่งที่ ทำไมเราทำเช่นนี้เป็นเพียง
เป็นวิธีการจัดเก็บข้อมูลเพื่อใช้ในภายหลัง
>> ฉันมีสองขั้นตอนที่นี่ เพียงแค่เดินผ่านมาตรฐาน
I / O ในขั้นตอนที่หนึ่งคุณ จำเป็นที่จะต้องสร้างการอ้างอิง
ไปยังไฟล์ที่มีทั้งหมด แคปไฟล์ดาว
เพื่อที่จะสร้างตัวชี้ไปยังแฟ้ม
ดังนั้นแล้วคุณต้องการที่จะเปิดมัน
คุณจะพูดว่าตัวอักษร ไฟล์เพียงแค่เท่ากับ fopen
และนี้จะกลับมา ตัวชี้ไปยังไฟล์ที่คุณเพิ่งเปิด
ผมเห็นคู่ของคุณ คนที่เวลาทำงาน
>> แต่สิ่งหนึ่งที่ เป็นตัวชี้ remember--
สามารถเป็นที่อยู่บางส่วนหรือโมฆะใช่มั้ย?
ถ้าเราเคยมีกรณีที่ สิ่งที่สามารถกลับโมฆะ
สิ่งที่เราต้องทำ ก่อนที่เราเคยใช้มันได้หรือไม่
เราจำเป็นต้องตรวจสอบว่า เป็นโมฆะหรือไม่ได้ใช่มั้ย?
เพราะบางท่านอาจจะมี ปัญหาที่สิ่งที่วัตถุ
ถูกกลับมาในการแหกคุกเป็นโมฆะ
คุณพยายามที่จะดำเนินการ ฟังก์ชั่นบางอย่างกับมัน
และทางเว็บไซต์คอมพิวเตอร์ของคุณโทษฐาน
ใช่มั้ย?
ฉันเดิมพันที่คู่ของคุณ อาจจะมีปัญหาที่
>> ดังนั้นด้วย fopen, fopen อาจจะ กลับชี้ไปยังแฟ้ม
หรือถ้าอะไรผิดพลาด มันจะกลับมาเป็นโมฆะ
ดังนั้นคุณจึงจำเป็นต้องตรวจสอบ ว่ามันไม่ได้กลับ null
ก่อนที่คุณจะพยายามที่จะทำอะไรอย่างอื่น
นี้เป็นเหมือนกรอบมาตรฐาน ที่คุณจะต้องที่นี่
ถ้ามีเคยมีโอกาสที่ บางสิ่งบางอย่างจะกลับมาเป็นโมฆะ
ตรวจสอบเพื่อให้แน่ใจว่า ไม่ได้ก่อนที่จะดำเนินการต่อไป
มิฉะนั้นคุณจะ ที่จะได้รับความผิดเว็บไซต์ที่น่ารัก
และไม่มีใครชอบที่จะจัดการกับคนเหล่านั้น
>> ดังนั้นในขณะที่เราเห็นที่นี่, อาร์กิวเมนต์แรก เป็นเพียงเส้นทางไปยังแฟ้ม
หากไฟล์ที่ไม่ได้อยู่ มันจะสร้างไฟล์ที่
และมันก็จะมีช่องว่าง
แล้วอาร์กิวเมนต์ที่สอง เป็นโหมดที่คุณต้องการ
เราต้องการที่จะอ่านจากแฟ้มนี้หรือไม่?
คุณต้องการที่จะเขียนจากมันได้หรือไม่
คุณต้องการที่จะผนวก?
ดังนั้นจริง ๆ แล้วสิ่งที่ฉัน said-- ถ้าไฟล์ไม่อยู่
และคุณกำลังพยายามที่จะอ่านจาก มันก็จะโยนความผิดพลาด
ถ้าแฟ้ม name-- ชอบถ้า file.text ยังไม่ปรากฏอยู่
และคุณต้องการที่จะเขียน มันก็จะสร้าง
แฟ้มว่างเปล่าที่เรียกว่า file.text สำหรับคุณ
และถ้าคุณต้องการที่จะผนวก คุณควรจะทำในสิ่งเดียวกัน
ที่ทำให้รู้สึก?
ถ้าคุณกำลังพยายามที่จะอ่านจาก ไฟล์ที่ไม่มีอยู่เลย
ก็จะโยนความผิดพลาด
มิฉะนั้นมันจะสร้างไฟล์ เพื่อให้คุณทำในสิ่งที่คุณต้องการมัน
เย็น
ตอนนี้เราสามารถอ่านจากแฟ้ม
และนี่เป็นเพียงชนิดของไป ผ่านฟังก์ชั่นที่แตกต่างกัน
ที่เรามีสำหรับแฟ้ม I / O นี้จะ มีความจำเป็นใน pset สัปดาห์นี้
ถ้าผมจำไม่ผิด
ใช่มันอย่างจะเป็น ที่จำเป็นใน pset สัปดาห์นี้
ดังนั้นผลตอบแทน fgetc ตัวอักษรถัดไป
fgets เพียงแค่ผลตอบแทนที่บรรทัดของข้อความ
มันจะเกิดสิ่งใดขึ้นไป บรรทัดใหม่และมันจะทำลาย
ดังนั้น fread อ่านบางอย่าง จำนวนไบต์และสถานที่ที่พวกเขา
เป็น array ซึ่ง เป็นสิ่งที่คุณอาจจะ
ต้องการที่จะทำอย่างไรกับอีก size-- อาจเป็นประโยชน์
>> กี่คนที่ได้อ่าน ข้อมูลจำเพาะ pset โดยวิธีการ?
ตกลง
[ไม่ได้ยิน]
>> ลำโพง 1: ตกลง
สิทธิ์ทั้งหมด
แน่นอนอ่าน that-- มัน pset สนุก
คุณจะได้รับการกู้คืนหน่วยความจำที่ถูกลบ card-- ที่น่าตื่นเต้นจริงๆเมื่อมันทำงาน
แต่แน่นอนเริ่มต้นการอ่านว่า
มาพูดคุยกับฉันถ้าคุณ มีคำถามเกี่ยวกับเรื่องนี้
>> ตกลงดังนั้นขณะที่ผมกำลังพูด fread อ่านจำนวนหนึ่งไบต์
นั่นคือจำนวนข้อบาง ที่คุณกำลังจะตั้ง
แล้ว fseek เพียงแค่ย้าย ตำแหน่งใดตำแหน่งหนึ่ง
ดังนั้นบางทีคุณอาจจะไม่สนใจ เกี่ยวกับ 10 ไบต์ต่อไป
คุณเพียงแค่ต้องการที่จะข้ามไป
คุณไม่สนใจเกี่ยวกับคนเหล่านั้น
คุณต้องการอ่านเริ่มต้นที่ 11 ไบต์
fseek ช่วยให้คุณสามารถทำเช่นนั้นได้
ดังนั้นมันจึงช่วยให้คุณสามารถเลือก เกี่ยวกับสิ่งที่คุณกำลังอ่าน
เพราะ fgetc, fgets และอ่าน fread จากสถานที่บางอย่างในแฟ้ม
>> วิธีการที่จะคิดเกี่ยวกับเรื่องนี้คือถ้านี้ เป็นไฟล์ของเราเมื่อคุณเปิดครั้งแรก
คุณมีตำแหน่งในไฟล์นี้ ที่จะเริ่มต้นที่จุดเริ่มต้น
เมื่อใดก็ตามที่คุณเรียก fgetc, fgetf หรือ fread,
มันจะต้องเริ่มต้นจาก เครื่องหมายตำแหน่งนี้
สมมติว่าคุณเพียงต้องการที่จะอ่าน อันนี้ของหน่วยความจำมากกว่าที่นี่
คุณไม่สามารถเพียงโทร
คุณต้องไปหาที่นี่ แล้วอ่านจากที่นั่น
หรืออ่านได้รับหรือ GETC, ขึ้นอยู่กับสิ่งที่คุณต้องการ
ดังนั้นขอเพียงช่วยให้คุณสามารถ ข้ามส่วนของหน่วยความจำ
และนั่นเป็นเพียง วิธีการที่คุณสามารถข้ามสิ่ง
โดยไม่ต้องอ่านให้พวกเขาลงในบัฟเฟอร์ของคุณ
ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่
>> เห็นได้ชัดว่ามี จำนวนมากตรงนี้ขนาน
การเปลี่ยนเส้นทางการส่งออกหรือการป้อนข้อมูลของเรา คุณได้อ่านและเขียน
ดังนั้น fputc เพียงแค่เขียน ตัวอักษรลงในแฟ้ม
fputs เขียนเส้น
fprintf พิมพ์เอาท์พุทที่จัดรูปแบบ
ดังนั้นถ้าคุณมีแท็บ หรือพื้นที่หรือ whatnot
แล้ว fwrite เขียนบาง อาร์เรย์ของไบต์ไปยังแฟ้ม
ดังนั้นนี่คือวิธีการเดียวกัน fwrite และ fread คล้ายคลึง
fgets opposites--, fputs และ แล้วจำนวนมาก fputc และ fgetc--
บ้าสิ่งที่รวดเร็ว
>> เพียงชนิดของให้ handy-- นี้ คุณจะมีเวลาที่ต่างกัน
ที่บางทีคุณอาจเพียงต้องการ ตัวละครตัวหนึ่งในช่วงเวลาที่
บางทีคุณอาจต้องการทั้งบรรทัด
ด้วย pset-- พจนานุกรมของคุณ ซึ่งอยู่ในสอง psets,
ผมเชื่อว่าเราจะให้คุณทั้ง พจนานุกรมในรูปแบบข้อความ
ซึ่งมีทุกคำ แยกจากกันโดยเส้น
ดังนั้นถ้าคุณอยากจะอ่าน ในหนึ่งคำที่เวลา
สิ่งที่คุณอาจจะใช้ถ้าคุณกำลังอ่าน และพวกเขากำลังแยกออกจากกันทั้งหมดในสายใหม่
และคุณต้องการเพียงแค่หนึ่งคำในเวลา?
>> ผู้ชม: fgets
>> ลำโพง 1: ขวา
Fgets-- เพราะที่ส่งกลับ สิ่งที่อยู่ในหนึ่งบรรทัด
และถ้าทุกคำพูดเป็นของตน แนวความคิดของเราสามารถใช้ fgets
เย็น
ไม่ว่าทำให้ความรู้สึกที่ทุกคน?
เย็น?
ใช่เรากำลังจะได้รับการ ส่วนที่สนุกกับคำแนะนำ
เร็ว ๆ นี้ที่คุณ ได้รับที่จะทำคณิตศาสตร์บาง
และมันจะดี
>> ล่าสุด step-- ปิดแฟ้มของคุณ
มีหลายสิ่งหลายอย่างที่นี่ หนึ่งในกรอบความคิดของเรา
คือถ้ามันสามารถกลับ null ตรวจสอบ null
ถ้าคุณเปิดบางสิ่งบางอย่าง คุณควรที่จะปิดมัน
ตกลงดังนั้นคุณไม่ได้ทำจนกว่าคุณจะ ทำถ้าคุณไม่ได้ปิดมัน
เหมือนมันยังไม่จบ จนผู้หญิงไขมันร้องเพลง
นั่นเป็นเหมือนการปิดไฟล์ของคุณ
ตามที่กล่าวนี่เพียง จะย้ำเสมอ
เปิดไฟล์ของคุณก่อนที่คุณจะ การอ่านหรือเขียนได้
และมักจะปิดมันถ้าคุณได้เปิดมัน
ทั้งหมดใช่มั้ย?
เย็น
>> ดังนั้นนี่คือตัวอย่าง
ดังนั้น tiny-- ผมไม่ทราบว่าคุณ คนจะเห็นได้ว่าดีมาก
ถ้าเพียง แต่เราสามารถที่จะเพิ่มขึ้น ความสว่างอย่างใด
ให้ฉันจริงทำเช่นนี้หากฉันสามารถ
ตกลงพวกคุณไม่สามารถจริงๆ เห็นว่าที่ทุกคนได้ไหม
ตกลงเราจะทำเช่นนี้แล้ว
[ไม่ได้ยิน]
>> ผมถือว่านี้จะดีกว่ามากที่จะเห็น
ทุกคนสามารถดูที่ของฉัน เมาส์ไปคือคำถาม?
อามีมันเท่าไหร่สิ่งที่ต้องดิ้นรน!
>> ตกลง
โดยทั่วไปพวกคุณควรจะมีชนิด ของความคิดของสิ่งนี้จะทำ
มันไม่สมบูรณ์แบบ
แต่ผมอยากจะอธิบายได้ดีกว่าการใช้จ่าย เวลามากขึ้นพยายามที่จะจัดรูปแบบได้อย่างถูกต้อง
โดยทั่วไปตามที่คุณเห็นที่นี่ เราเริ่มต้นด้วยการเปิดไฟล์
และเรามีบางอย่าง แฟ้มฐานข้อมูลที่เรามี
เปิดที่บอกว่ามันเป็นนักเรียนของเรา
และเรากำลังจะเขียนถึงมัน
ดังนั้นแน่นอนกลับ null
ดังนั้นเราจึงมีการตรวจสอบเป็นโมฆะ
แล้วถ้ามันไม่ได้ null เราผ่านไป
และที่คุณเห็นเราไม่ วนลูปผ่านที่นี่
มีนักเรียน
นักเรียนเป็นกัญชากำหนดให้เป็นสาม
และสิ่งที่เรากำลังทำคือการที่เรามี พิมพ์ไปยังแฟ้มใช่มั้ย?
ดังนั้นเราจึงเป็นสิ่งที่พิมพ์ออกไปยังไฟล์ของเราหรือไม่
>> ผู้ชม: คะแนน ที่อยู่ในอาเรย์?
>> ลำโพง 1: ใช่
คะแนนที่อยู่ใน array-- ว่า
ดังนั้นเราจะเปิดนี้ แฟ้มฐานข้อมูลซึ่ง
ผมถือว่าเป็นอะไรบางอย่าง ของฐานข้อมูลเกรด
และเรากำลังเพียงแค่พิมพ์ออก คะแนนของนักเรียนแต่ละคนไปยังไฟล์ที่
เย็น?
ดี
น่ากลัว
ตกลง
ขอกลับ to--
>> ผู้ชม: ฉันมีคำถามอย่างรวดเร็ว
เป็น printf ไม่ได้อยู่ในการห่วง?
นั่นเป็นเพียงในวงถ้า?
ลำโพง 1: ไม่มันในการห่วง
ฉันไม่เห็นเมาส์ของฉันได้ดีมากขึ้นที่นี่
ดังนั้นฉันพยายามที่จะ รูปแบบที่ถูกต้อง
วงเล็บนี้ควรจะหายไป
มันควรจะลงที่นี่
นี่คือสิ่งที่อยู่ในของคุณสำหรับวง
ที่นั่น
ตอนนี้ก็สวย
นั่นคือวิธีการที่ควร be-- ยกเว้น สำหรับการที่ตัวล่าสุดที่ผมออก
ตกลง
ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่
ตกลง
เรากำลังจะดำเนินการต่อไป ยังสิ่งต่อไป then--
ซึ่งในความเป็นจริงคุณจะ ที่จะต้องดูรหัส
ดังนั้นฉันแค่ไป คัดลอกว่ากว่าตอนนี้
ตกลง
ดังนั้นฉันจะแสดงให้พวกคุณรหัสนี้
และผมอยากให้คุณลองและตัวเลข จากสิ่งที่มันควรจะทำ
>> ให้ดังนั้น that-- ใช้เวลานาทีหรือมากกว่านั้น
ลองและคิดออกว่าเกิดอะไรขึ้นที่นี่
>> ความคิดใด?
>> เรารู้ว่าเรามีอย่างน้อยสอง ข้อโต้แย้งในบรรทัดคำสั่งใช่มั้ย?
ผมถือว่าหนึ่งซึ่งเป็นไปได้ ที่ [ไม่ได้ยิน] ของโปรแกรมของเราเป็น
แล้วอย่างอื่น
เพราะถ้า [ไม่ได้ยิน] น้อย กว่าสองเราตะโกนใส่พวกเขา
ใช่มั้ย?
และจากการใช้งานดูเหมือนว่า มันเป็นไปได้การจัดเรียงของบางไฟล์
เราทุกคนเห็นด้วยกับการที่?
ดังนั้นตอนนี้สิ่งที่เป็นห่วงการทำ?
สิ่งที่มันจะผ่าน?
>> ผู้ชม: ไฟล์ทั้งหมด
ลำโพง 1: แน่นอน
มันจะผ่านทั้งหมด ไฟล์ที่เราได้ใส่มี
ดังนั้นสำหรับแต่ละไฟล์ก็ เปิดขึ้นสตริงบางมี
มันเปิดไฟล์นั้น
ใช่มั้ย?
และก็อ่านจากมัน
แน่นอนว่าการตรวจสอบว่าเป็นโมฆะ
และแล้วก็พิมพ์
ถ้าเป็นโมฆะก็เพียงบอกเรา ว่าที่ไม่ใช่ไฟล์ที่มีอยู่
เพราะจำได้ว่ามี อ่านไฟล์ของเรามีอยู่
ใช่มั้ย?
ด้วยการเขียนและการผนวก, คุณจะได้รับไปกับมัน
แต่ด้วยการอ่านไฟล์ของเรามีอยู่
>> แล้วถ้ามันไม่อยู่ สิ่งที่เราทำอะไรที่นี่?
ขอเพียงเริ่มต้นที่นี่
นี่คืออะไร do-- อักษรตัวแรกนี้
มันทำอะไรได้บ้าง
เขาได้รับตัวละครตัวหนึ่งใช่มั้ย?
ดังนั้นสิ่งที่จะทำเช่นนี้?
มันได้รับตัวอักษรตัวแรก
ใครรู้ EOF?
>> ผู้ชม: End ของไฟล์?
>> ลำโพง 1: จุดจบของ file-- ว่า
ดังนั้นมันจะผ่านไป ไฟล์ทั้งหมดใช่มั้ย?
และจากนั้นก็จะปรับปรุงโดย รับทุกตัวอักษรที่ตามมา
ใช่มั้ย?
และสิ่งที่มันทำอะไร?
ผู้ชม: ใส่ที่ in--
>> ลำโพง 1: putchar พิมพ์ ที่หน้าจอของคุณ
[ไม่ได้ยิน] ตัวละคร
แล้วเมื่อมัน [ไม่ได้ยิน] นี้จะปิดแฟ้ม
>> ผู้ชม: คุณไม่จำเป็นต้อง [? อื่น? ?]
>> ลำโพง 1: ไม่จำเป็นต้อง
ผมหมายถึงมันส่อให้เห็นชนิดของในครั้งนี้
เพราะผลตอบแทนที่ได้ แต่ตราบใด เช่นนี้ไม่ได้จับนี้คุณจะสบายดี
ฉันหมายความว่ามันอาจจะเป็นสิ่งที่ดี ฝึกที่จะทำอย่างอื่น
แต่ที่อื่นไม่ได้เสมอ ที่จำเป็นโดยเฉพาะอย่างยิ่ง
ถ้าคุณมีบางสิ่งบางอย่าง เช่นเดียวกับผลตอบแทนที่
หมายความว่าในกรณีนี้ถ้าจะจับ มันโปรแกรมของคุณจะสิ้นสุด
และมันจะไม่เคยได้รับนี้
มันเป็นมากขึ้นสำหรับกรณีที่คุณอยู่ ไม่จำเป็นต้องมีอะไรบางอย่างกลับมา
เพราะถ้าเรื่องนี้ไม่ได้ กลับอะไร
มันจะหมายความว่าถ้าเรื่องนี้เป็นจริง ส่วนที่เหลือนี้จะยังคงทำงาน
และในกรณีที่คุณ ต้องการเท็จ
ถ้ามันกลับมาและ จบโปรแกรมของคุณ
อื่นที่ไม่จำเป็นทั้งหมด เวลาขึ้นอยู่กับบริบท
จาค็อบ, คุณมีคำถาม?
ผู้ชม: ใช่
เพื่อไม่ fgetc ได้รับตัวอักษรต่อไปหรือไม่
วิธีการที่ไม่เป็นตัวละครเพิ่มขึ้น?
ลำโพง 1: ใช่
ดังนั้น fgetc ได้รับตัวอักษรถัดไป
คุณสามารถคิดว่ามันเช่น C ++ ในความรู้สึก
>> ผู้ชม: ดังนั้นสิ่งที่เป็น EOF?
>> ลำโพง 1: EOF เป็นจุดสิ้นสุดของแฟ้ม
มันเป็นเพียงเครื่องหมายที่ช่วยให้คุณรู้ว่า ว่าคุณจะอยู่ที่ส่วนท้ายของไฟล์ของคุณ
ดังนั้นนี้จะพิมพ์ มาตรฐานของคุณออก
และจากนั้นก็จะปิด ไฟล์เมื่อมันทำ
แล้วให้ไปที่ ไฟล์ต่อไปใช่มั้ย?
ดังนั้นโดยรวมสิ่งที่ไม่โปรแกรมนี้จะทำอย่างไร
>> [ไม่ได้ยิน]
>> ลำโพง 1: ใช่
มันก็พิมพ์ทุกสิ่งที่มี
ดังนั้นกสท. ถ้าพวกคุณได้เคยใช้ แล้วชื่อของ file-- บาง
ผมไม่ทราบว่าถ้าใด ๆ ของคุณมี เคยทำที่ใน terminal ของคุณ
แต่ถ้าคุณเคยใช้ คำสั่ง CAT-- C-A-T--
และแล้วสิ่งที่ไฟล์ คุณมีตรงนี้มัน
พิมพ์มันออกไปยังสถานีของคุณซึ่ง สามารถเป็นซุปเปอร์ที่มีประโยชน์สำหรับบางสิ่งบางอย่าง
ผมใช้มันมาก
ไม่ว่าทำให้ความรู้สึกที่ทุกคนหรือไม่
เย็น?
>> OK เพื่อให้งานของคุณ now-- ทั้งโดย ตัวคุณเองหรือกับคนรอบ you--
คือการเขียนโปรแกรมที่ง่าย ที่เพิ่งจะเขียนคำว่า "สวัสดีชาวโลก!"
ออกไปยังแฟ้ม
>> [ไม่ได้ยิน]
>> ลำโพง 1: ฉันก็ชอบทำ ฉันว่าเมื่อสัปดาห์ที่แล้วไม่ดี?
ผมไม่ได้คิดว่ามันเป็นที่เลวร้าย
ฉันดีใจที่คุณกำลังทั้งหมดที่นี่
จริงๆมันทำให้ฉันมีความสุข
ฉันสาวของความสุขเรียบง่าย
ฉันเช่นเดียวกับเมื่อส่วนของฉันเข้าร่วม
ดังนั้นฉันแค่นี้เริ่มต้นสำหรับ พวกคุณเพื่อให้เราสามารถรหัสร่วมกัน
ฉันไม่ชอบใส่ทุกคนใน จุดที่ถ้าคุณต้องการที่จะเป็น
>> ผู้ชม: สำหรับแบบทดสอบให้ทำ เราจะต้องเขียนโปรแกรม?
>> ลำโพงที่ 1: คุณอาจถูกขอให้ เขียนโปรแกรมอย่างง่ายด้วยมือ
Yup
>> ผู้ชม: แบบทดสอบเป็นสัปดาห์ถัดไปใช่ไหม?
>> ลำโพง 1: แบบทดสอบเป็นวันพุธหน้า
นั่นหมายความว่ามี [น่ารัก? CSE?] การจัดลำดับบุคคลที่หลังจากนั้นซึ่ง
หมายความว่าคุณจะได้รับคะแนนของคุณ หลังที่ night-- ในสิ่งที่เวลา?
ใครจะรู้?
แต่มันจะเป็นคืนที่
>> สิทธิ์ทั้งหมด
ทำอย่างไรเราต้องการที่จะเริ่มต้นนี้หรือไม่?
ฉันจะให้คุณเริ่มต้น hint-- กับเรื่องนี้
>> ผู้ชม: คุณต้องเปิดไฟล์
>> ลำโพง 1: ใช่
ดังนั้นสิ่งที่คุณต้องการที่จะเรียกสิ่งนี้?
คุณเพียงต้องการที่จะเรียกว่า "แฟ้ม"?
ขอให้เป็นเรื่องง่าย
ดังนั้น fopen-- สิ่งที่เรา การทดสอบการแสดงผลจะเป็นอย่างไร
เรียกมันว่า "สวัสดี".
และสิ่งที่เป็นโหมดของเราหรือไม่
สิ่งที่เราทำกับไฟล์นี้หรือไม่?
>> ผู้ชม: อ่าน
การเขียน
ลำโพง 1: เรากำลังเขียนถึงมัน
น่ารัก
ตกลงดังนั้นเราจึงมีเดี๋ยวนี้
เราต้องการอะไรจะทำอย่างไร?
ผู้ชม: ตรวจสอบว่าเป็นโมฆะ
ลำโพง 1: ตรวจสอบว่าเป็น null-- ว่า
นั่นคือสิ่งที่ฉันต้องการจะได้ยิน
ที่ควรจะเป็นไปโดยอัตโนมัติโดยเฉพาะอย่างยิ่ง สวยมากจากจุดนี้
หากคุณเริ่มต้น segfaulting คุณอาจ ไม่ได้ตรวจสอบสำหรับ null ที่ไหนสักแห่ง
เก้าสิบครั้งจากที่ จะเป็นข้อผิดพลาดของคุณ
ดังนั้นหากคุณเพิ่งจะได้รับใน นิสัยมักจะตรวจสอบว่าเป็นโมฆะ
ชีวิตของคุณเป็นไปได้ ที่ดีและ easy-- หรือง่าย
>> เพื่อตรวจสอบเพื่อดูว่ามันเป็นโมฆะ
ดังนั้นถ้ามันไม่เป็นโมฆะซึ่ง คือสิ่งที่บางเท่ากับ
means-- ไม่ null-- มันถูกต้อง
สิ่งที่เราต้องการจะทำอย่างไร
เราเพียงแค่ต้องการที่จะพิมพ์ ไปยังไฟล์ที่ใช่มั้ย?
ดังนั้นเราจึงเป็นสิ่งที่จะใช้งานหรือไม่
>> ผู้ชม: fprintf
>> ลำโพง 1: Fprintf-- ที่น่ารัก
และ fprintf ใช้เวลาสอง arguments-- ที่ มันจะและสิ่งที่เราต้องการพิมพ์
ดังนั้นสิ่งที่เป็นคนแรก?
อยู่ที่ไหนมันจะไปไหน?
>> ผู้ชม: ไฟล์
>> ลำโพง 1: มันจะยื่น
และเราทำในสิ่งที่ต้องการพิมพ์?
"สวัสดีชาวโลก"
สิทธิ์ทั้งหมด
เรามีหนึ่ง thing-- ล่าสุด กระบวนทัศน์ขนาดใหญ่อีกที่นี่
ผู้ชม: ปิด
ลำโพง 1: ปิด
มีคุณไป
>> ผู้ชม: ที่เกิดขึ้นนี้ ถ้าไฟล์เป็นโมฆะ?
ลำโพง 1: ไม่มีนี้ถ้ามันไม่เป็นโมฆะ
ผู้ชม: โอ้ถ้ามันตกลง not--
สำหรับ fopen แล้​​ว สองอาร์กิวเมนต์ที่ไปภายใน
สิ่งที่ไม่อาร์กิวเมนต์แรกหมายถึงอีกครั้งหรือไม่
>> ลำโพง 1: อาร์กิวเมนต์เป็น เช่นเดียวกับชื่อของไฟล์
ที่คุณอยากไป
ดังนั้นหลังจากนี้จะทำงานคุณจะ มีไฟล์บางอย่างที่เรียกว่า "สวัสดี"
ที่มี "สวัสดีโลก" ที่อยู่ภายใน
นั่นคือทั้งหมดที่
เพียงแค่ชื่อ
>> ผู้ชม: และเนื่องจากมันเขียน ไฟล์ไม่จำเป็นต้องมีอยู่แล้ว
นั่นคือสิ่งที่คุณกล่าวว่า?
>> ลำโพง 1: ขวา
เผง
หาก "สวัสดี" เป็นไฟล์ ยังไม่ปรากฏอยู่ก็
จะสร้างไฟล์ที่เรียกว่า ฮัลโหล "และเขียนไปให้คุณ
>> ผู้ชม: เมื่อคุณบอก โปรแกรมที่จะเขียนไปยังแฟ้ม
ทำไมคุณเขียน "แฟ้ม" แทน ชื่อของไฟล์และ fprintf--
>> ลำโพง 1: เพราะในกรณีนี้เรามี FILE-- ขนาดใหญ่ที่ทั้งหมดในดาว caps--,
ไฟล์
ดังนั้นจึงเป็นตัวชี้ไปยังแฟ้ม ที่คุณกำลังพูดถึง
นี้เป็นวิธีที่ เราก็เรียกมัน
ดังนั้นในกรณีนี้คุณ สามารถคิด AHA file--,
เราสามารถใช้ไฟล์เจ้านี่ที่นี่ หมายถึงการเปิดตัวของ "ฮัลโหล"
และให้มันเขียน
>> ผู้ชม: เราสามารถใส่ "Hello" แทน [? เพียง?] ฉไฟล์?
ลำโพง 1: ไม่มีเพราะ "Hello" จะต้องมีการเปิดและเขียนได้
ไฟล์ที่นี่เป็นเหมือน designator ว่าตกลงเรา
มี hello-- file-- นี้ ที่เรากำลังมองหาที่
จะได้รับการเปิด
และเราจะไปเขียนไป
หากคุณเพียงแค่ใช้ "สวัสดี" ที่ถูกห่อหุ้มอยู่ในนั้น
ดังนั้นมันจะออกนอกลู่นอกทาง
ฉันหมายความว่าคุณจะได้ตั้งชื่อมัน
คุณอาจจะได้ทำไฟล์ ดาว "Hello" เท่ากับว่า
แต่จุดทั้งเป็นที่คุณ จำเป็นต้องมีตัวชี้แฟ้มดาวในการสั่งซื้อ
เพื่อให้สามารถใช้ฟังก์ชั่นเหล่านี้
ผู้ชม: คุณสามารถทำ ไฟล์, ดาว, แฟ้ม, "Hello"
หรือคุณไม่ต้องใส่ ไฟล์ดาวแฟ้มโดยมันได้หรือไม่
ลำโพงที่ 1: คุณสามารถทำได้ ทำไฟล์, ดาว, "สวัสดี".
คุณสามารถเปลี่ยนนี้ สิ่งที่ชื่อที่คุณต้องการ
มันเป็นโดยพลการอย่างสมบูรณ์ สิ่งที่ชื่อที่เป็น
คุณสามารถตั้งชื่ออะไร
ชื่อมันบินปาเก็ตตี้ถ้าคุณต้องการ
>> ผู้ชม: อะไรคือสิ่งที่ "W" ในเครื่องหมายคำพูดหรือไม่?
>> ลำโพง 1: "W" เป็นเพียงโหมด
ดังนั้นเราจึงกำลังเขียนมาที่ภาพนี้
ทุกคนที่ดี?
ชัดเจน?
ใช่
>> ผู้ชม: ดังนั้นเมื่อมันเขียนนี้ ไฟล์ที่เราทำแล้วหาไฟล์ที่?
>> ลำโพง 1: มันจะอยู่ในที่เดียวกัน ไดเรกทอรีที่คุณอยู่ในขณะนี้
ถ้าคุณอยู่ใน pset สาม คุณทำงานนี้ภายใน pset ของคุณ
โฟลเดอร์ที่สามเป็นไปได้ ไฟล์นี้เรียกว่า "สวัสดี".
เย็น?
ทุกคนที่ดี?
ฉันรู้สึกเหมือนคุณกำลังทั้งหมด ได้รับมันซึ่งเป็นที่ดี
ตกลง
เพื่อกลับไป show-- สไลด์ของฉัน ฉันรักเมื่อสิ่งที่ทำงาน
ตกลง pointers-- พวกคุณตื่นเต้น?
ตัวชี้ที่ดี
พวกเขาใช้เวลานิด ๆ หน่อย ๆ การห่อหัวของรอบ
ปีนี้เป็นปีที่สองของฉัน ชี้การเรียนการสอน
และผมคิดว่าในที่สุดผมก็มีมัน
ดังนั้นถ้าคุณต่อสู้ก็ OK
ที่ผมกล่าวว่าก่อนที่จะวาดภาพ จะช่วยให้มากกับสิ่งที่อยู่ใน CS,
มากที่สุดเท่าที่ผมคิดว่าคนมีแนวโน้มที่ จะคิดว่าโอ้เราอยู่ที่คอมพิวเตอร์
เราควรรหัสเพียง
ภาพวาด No-- จริงๆจะช่วยให้คุณ
และผมขอแนะนำให้คุณ แตะลงในด้าน kindergartner ของคุณ
และนำออกดินสอสี หรือเครื่องหมายและดึง
เพราะมันจะช่วยให้คุณ
และถ้าคุณเห็นฉันในเวลาทำงานผม จะแบกไปรอบ ๆ กองกระดาษ
ด้วยปากกาวาดภาพสิ่งที่ออก
>> ดังนั้นโดยเฉพาะอย่างยิ่งกับ pointers-- วาดภาพ
และผมมั่นใจว่าเราจะจริงจะ ได้รับการวาดภาพบางส่วนที่นี่ด้วย
>> ดังนั้นพวกคุณทุกคนได้เห็นบิงกี้ สิ่งนี้ claymation เย็น
และเราคิดว่ามันตลกจริงๆเมื่อ เขาระเบิดเป็นพวงของชิ้น
มันเป็นบางอย่างที่การ์ตูนโล่งอกสำหรับชั้นเรียน
C [ไม่ได้ยิน] ความสามารถที่ดีนี้ เพื่อให้สามารถควบคุมหน่วยความจำ
และมันเป็นหนึ่งในสิ่งที่จริงๆ ทำให้มันดังกล่าวเป็นภาษาที่มีประสิทธิภาพ
แต่ด้วยพลังอันยิ่งใหญ่มา ความรับผิดชอบที่ดี
และสิ่งที่สามารถเกิดขึ้นได้บ้า ถ้าคุณไม่ระมัดระวัง
ดังนั้นเมื่อคุณกำลังใช้ ตัวชี้ที่คุณต้องการให้
แน่ใจว่าคุณเข้าใจจริงๆ ว่าสิ่งที่คุณกำลังทำ
หวังว่านิด ๆ หน่อย ๆ ต่อไปของ เวลาจะช่วยให้คุณเข้าใจจริงๆ
ชี้วิธีการที่จะใช้พวกเขา และวิธีการจัดการกับพวกเขา
>> ดังนั้น memory-- ฉันแน่ใจว่าเราได้ เห็นแผนภาพนี้ก่อน
ดังนั้นนี้เป็นเพียงแผนภาพง่ายของ ว่าสิ่งที่อาจจะมีการจัดเก็บไว้ในหน่วยความจำ
เพื่อให้คุณโดยทั่วไปมีเหล่านี้ อาร์เรย์ขนาดใหญ่ของบล็อกหนึ่งไบต์
เป็นสิ่งที่เรามีเล็กน้อยตรงนี้ เพิ่มขึ้นโดยหนึ่งในแต่ละครั้ง
นี้อยู่ในฐานสิบหก [ไม่ได้ยิน] เพื่อให้บล็อกแปดบิต
และทุกบล็อกที่เกี่ยวข้อง กับบางส่วนที่อยู่เลขฐานสิบหก
ดังนั้นถ้าคุณเคยเห็น 0x ที่เพียง notating
ว่ามันเป็นที่อยู่เลขฐานสิบหก
คุณสามารถสมมตินี้หมายถึง ที่อยู่ในความทรงจำบางส่วน
เรากำลังพูดถึงอยู่หน่วยความจำ เมื่อใดก็ตามที่คุณเห็นเลขฐานสิบหก
>> เรามี ints เป็นตัวแปร ลอยเป็นตัวแปรที่เก็บ
ดังนั้น ints ints ร้าน
ลอยลอยเก็บ
ดังนั้นเรายังมีคำแนะนำ ที่อยู่หน่วยความจำเก็บ
นั่นคือการเรียงลำดับของการทำแผนที่
ชี้เป็นเฉพาะ ที่อยู่หน่วยความจำ
เพื่อให้เป็นเช่นชนิดของคุณมี
เครื่องใช้ไฟฟ้าของคุณคือ 32 บิตซึ่งหมายความว่า ที่อยู่หน่วยความจำของคุณเป็นสี่ไบต์
ดังนั้นตัวชี้ใด ๆ ที่คุณมี นอกจากนี้ยังเป็นไปได้สี่ไบต์
หรืออื่น ๆ ถ้าหากมันเป็นสี่ไบต์ หน่วยความจำสี่ไบต์
หน่วยความจำเก็บชี้
ดังนั้นพวกเขากำลังสี่ไบต์
Cool-- เพียงต้องการที่จะเสริมสร้างว่า
>> คุณควรจะได้รับการ์ตูนในตอนนี้
ผมไม่ทราบว่าหลายท่าน เป็นแฟน XKCD แต่ฉันรัก XKCD
มันยิ่งใหญ่
>> สิทธิ์ทั้งหมด
ดังนั้นการสร้าง pointers-- ที่ผมกล่าวว่ามันเป็น สวยมากเช่นเดียวกับสิ่งอื่น
คุณมีประเภท
คุณมีชื่อ
ใช่มั้ย?
นั่นคือสิ่งที่เราต้องมี [? Hex?] ดาวหมายความว่ามันเป็นตัวชี้
แล้วสิ่งที่คุณต้องการจะเรียกมันว่า
ดังนั้นชนิดหมายถึง สิ่งที่คุณสามารถจัดเก็บ
ทั้งหมดใช่มั้ย?
ในทำนองเดียวกับที่ว่าถ้าเราทำ ints, เรารู้ว่าเรากำลังจัดเก็บ int มี
มีตัวชี้มัน ถืออยู่หน่วยความจำ
แต่สิ่งที่มันหมายถึงการเป็น that-- นี่คือสิ่งที่ การวาดภาพจะมาในสะดวก
ดังนั้นในกรณีนี้เรามี บาง value-- สมมติว่าสี่
สี่เป็นที่อยู่ที่หนึ่ง
OK?
>> นี้เป็นครั้งแรกที่นี่หมายถึง ว่ามันเป็นตัวชี้ 2x
ใช่มั้ย?
มันเป็นบางตัวชี้ x
x อาจจะเป็นสิ่งใด
ไม่ว่า x เป็นเท่าไหร่บอกว่า x เป็นสี่
มันจะเก็บ หน่วยความจำที่อยู่ที่นี่
ดังนั้น int, ดาว, ค่า x นี้ บางช่องอื่น ๆ ใน memory--
ใครจะรู้ว่านี่คืออะไร
แต่มันจะเก็บอยู่ที่นี่
ดังนั้นนี้จะเป็น like-- ในกรณีนี้ไม่ว่า,
จะถูกเก็บไว้ที่ 0x1-- สิ่งที่ถูกเก็บไว้ ตามที่อยู่ที่ตัวชี้ของเราถือ,
มีเพื่อให้ตรงกับขึ้นกับ สิ่งที่เราได้กำหนด
ดังนั้นใน 0x1 ในกรณีนี้นี้คือ x
นี้สามารถเท่านั้นที่เคยเป็น int ในขณะที่เรากำลังใช้นี้
>> ในทำนองเดียวกันถ้าเรามี 1y อื่นใด
ที่อยู่จะถูกเก็บไว้ด้วยและมี จะเป็นสิ่งเดียวกันกับ char-- Z
ในลักษณะเดียวกับเมื่อใดก็ตามที่คุณ พยายามทำ INTX เท่ากับ 0.4,
มันจะตะโกนที่คุณและเป็น ที่ไม่เหมือนใคร, คุณบอกว่าคุณอยาก int
นี้ควรจะเป็น int
หยุดความพยายามที่จะให้มันลอย
>> ดังนั้นปล่อยให้สิ่งที่จะเป็นในสิ่งที่พวกเขาต้องการที่จะเป็น
ปล่อยให้สิ่งที่เป็นตัวเอง
ดังนั้นสิ่งที่ใหญ่เป็นเพียง สิ่งที่ชนิดของตัวชี้
ก็คือว่าเป็นเพียง สิ่งที่คุณสามารถจัดเก็บมี
OK?
กับการปฏิบัติเช่นเดียวกับ เมื่อสัปดาห์ที่แล้วทุกอย่าง
ดูเหมือนว่าจริงๆชนิดของนามธรรม
เรากำลังจะทำปฏิบัติบาง
มันควรจะทำให้รู้สึกมากขึ้น
>> ดังนั้นการอ้างอิงและ dereferencing-- มัน สำคัญมากที่จะได้รับเหล่านี้ตรง
ฉันยังคงต้องมีการฟื้นฟู ทุกขณะนี้แล้ว
และฉันชอบรอที่หนึ่งที่ฉันไม่ต้องการ?
ดังนั้นเครื่องหมายจริงจะให้ คุณอ้างอิงหรือที่อยู่ของ
ดังนั้นมันกลับมาอยู่ใน หน่วยความจำที่ตัวแปรจะถูกเก็บไว้
ดังนั้นมันจะจริงกลับไปยังคุณ เลขฐานสิบหกในขณะ dereferencing มัน
เป็นจริงที่จะให้คุณ ข้อมูลที่ถูกเก็บไว้ที่นั่น
OK?
ดังนั้นเราจะดูตัวอย่าง อย่างรวดเร็วจริงๆหรือจริงขึ้นต่อไป
>> ตกลง
ดังนั้นเราจะต้องคิดว่า อย่างระมัดระวังเกี่ยวกับเรื่องนี้
ดังนั้นที่นี่เรามีบางจำนวนเต็ม x
ฉันจะพยายามและวาดนี้ ออกที่ดีที่สุดของความสามารถของฉัน
ดังนั้นเรากำลังจะมีช่อง x นี้
และจะจัดเก็บห้า
ที่อยู่ของมันคือ 0x4
เย็น?
ดีทั้งหมด
>> ดังนั้นตอนนี้เรามีตัวชี้นี้
มันเป็นมากกว่าที่นี่
และเครื่องหมายให้เรา ที่อยู่ของบางสิ่งบางอย่าง
ดังนั้นในกรณีนี้มันเป็นที่อยู่ของ x
เป็นที่อยู่ของ x คืออะไร?
04-- และตัวชี้นี้เป็น 0x08
เย็น?
เพื่อให้คุณสามารถคิดเกี่ยวกับเรื่องนี้ ตัวชี้ที่ 04 เพียงแค่ชี้ไปที่นี่
และพวกเขากำลังเรียกว่าตัวชี้ เพราะในขณะที่เราได้รับมากขึ้นในการนี​​้
คุณกำลังจะไปดูที่ชี้ไปยังสิ่งที่
และเป็นหนึ่งในบล็อกชี้ไปที่อื่น บล็อกจะทำให้รู้สึกมากขึ้น
ดังนั้นนี่คือสอง
แล้วเรามีบาง สำเนาซึ่งเป็น 0x0c what--
และมันจะ dereference ตัวชี้ของเรา
>> ดังนั้นสิ่งที่จะพูดคือ ตกลงนี่เป็นตัวชี้ของเรา
ค่าที่มันเก็บเป็น 0x04, และสิ่งที่ มันบอกว่าจะไปที่ที่อยู่นี้
และบอกฉันว่ามีอะไรอยู่ในนั้น
เพื่อให้ได้อย่างมีประสิทธิภาพ สิ่งที่ลูกศรนี้จะทำ
คุณสามารถคิดเช่นนี้ดาวของคุณ
ดังนั้นตกลงเมื่อเราทำดาวจะหมายถึงการปฏิบัติตาม
ไปที่ที่อยู่นี้
และที่พื้นเพียงต่อไปนี้ ลูกศรนี้เพื่อก้อนหน่วยความจำนี้
และให้เราสิ่งที่อยู่ในนั้นซึ่งคือ 5
มันเป็นเหตุผลที่สำเนาของเราเท่ากับ 5
ที่ทำให้รู้สึก?
ไม่มีใครต้องการฉันจะไปถึง ที่อีกครั้งหรือช้ามากขึ้น?
คุณต้องการให้ฉันไป ผ่านมันอีกครั้งหนึ่ง?
ตกลง
เรากำลังจะไปวาดมันอีกครั้ง
เมื่อเราเริ่มต้นเราทั้งหมดเห็นด้วยเรามี ก้อนบางส่วนของหน่วยความจำที่เป็นตัวแปร
x ที่เราตั้งไว้เท่ากับ 5
เราไม่ได้ควบคุมที่อยู่ในหน่วยความจำ
ดังนั้นจุดนี้เป็นเพียง ที่ได้รับมอบหมายพล
ที่ดีมี?
ตกลง
จากนั้นเราก็เริ่มต้นชี้ไปยัง int
นั่นเป็นเหตุผลที่มันได้รับอนุญาตให้ชี้ไปที่ x เพราะเรามี int ที่นี่
เรามีก้อนของอีกคนหนึ่ง หน่วยความจำเพราะตัวชี้นี้
เป็นตัวแปรเช่นเดียวกับสิ่งอื่น
มันได้รับมอบหมายให้พล พื้นที่ในหน่วยความจำบางส่วน
และสิ่งที่จะเก็บเป็นที่อยู่ของ x
สัญลักษณ์หมายถึงที่อยู่ของ x
ดังนั้นสิ่งที่เป็นที่อยู่ของ x?
>> ผู้ชม: มัน zero--
ลำโพง 1: 0x04
ดังนั้น then-- สุดท้าย
เรามี copy-- บางอีกครั้ง เพียงตัวแปรอื่น
จึงขอกำหนดสถานที่โดยพลบางส่วน
และเรา dereference ตัวชี้ของเรา
ดาวหมายถึงการไปที่ ที่อยู่ที่เก็บไว้ในตัวชี้ของฉัน
บอกสิ่งที่มี
ดังนั้นที่อยู่ที่เก็บไว้ ในตัวชี้เราคือ 0x04
ดังนั้นเราจะไปยังที่อยู่ที่
มันชี้ไปยังที่อยู่ที่
สิ่งที่อยู่ภายในบล็อกหน่วยความจำนี้หรือไม่?
มันเป็นห้า
นั่นคือสิ่งที่เรากำหนดสำเนาของเรา
ทุกคนที่ดี?
เย็น
ภาพเหมือนเดิม
>> ดังนั้นการติดตามค่าตรงนี้ฉัน จะให้พวกคุณคิดว่าเกี่ยวกับเรื่องนี้
เราสามารถวาดภาพอื่น
แต่ผมอยากให้คุณลองและเหตุผล ผ่านทางนี้ด้วยตัวคุณเองสำหรับนาที
>> เนื่องจากพวกเขาไม่ได้ให้ เราอยู่ตัวอย่างเช่น
ฉันแค่จะทำเครื่องหมาย x นั่น ซึ่งจะช่วยขับรถกลับบ้าน
สัญลักษณ์หมายถึงที่อยู่
>> ดังนั้นในครั้งแรกที่ทุกคน ไปกับบรรทัดแรก
บางชุด x ของ five-- บาง ช่องเสียบแบบสุ่มในหน่วยความจำ
ตัวชี้ดาว Int เท่ากับ ไปยังที่อยู่ของ x ใช่มั้ย?
ตัวชี้ดาว Int สร้าง บล็อกนี้เรียกว่าตัวชี้
และกำหนดไปที่ที่อยู่ของ x
ฉันกลัวที่เครื่องหมาย
>> ตอนนี้สิ่งที่เรากำลังทำคือการที่เราบอกว่า ตกลง dereference ตัวชี้ของเรา
ดังนั้นเราจะไปตกลงสิ่งที่อยู่ในตัวชี้ของเราหรือไม่
มันเป็นเครื่องหมาย x
ไปที่เครื่องหมาย x และกำหนดมัน
>> ดังนั้นตอนนี้เครื่องหมาย x เป็นไปได้ 35
ดังนั้นโดยทั่วไปเมื่อคุณอยู่ dereferencing คุณไปตกลง
คุณกำลังจะได้รับการวาดภาพ ภาพเช่นนี้
คุณกำลังจะได้รับการวาดภาพ ลูกศรของคุณกว่าที่มันเป็น
ดังนั้นไปที่ช่องนี้ในหน่วยความจำและทั้ง ให้ฉันที่กลับมาคุ้มค่าหรือเปลี่ยนแปลงมัน
ในกรณีนี้เพราะเราอยู่ในที่นี้ ค่าที่เรากำหนดให้เป็น 35
ในขณะที่ที่ผ่านมา หนึ่งถ้าคุณสังเกตเห็นเรา
ได้รับการกำหนดสิ่งที่เป็น ที่นี่เพื่ออะไร
>> ดังนั้นพวกเขาจึงมีตารางนี้น่ากลัว
มันไม่ใช่ว่าไม่ดี
พวกคุณทำงานกับมัน
ฉันจะวาดมันออกมาบนกระดาน
เรากำลังจะไปกรอกข้อมูลเข้าด้วยกัน, OK?
เพื่อคว้ากระดาษบางคว้า, คนที่เริ่มต้นการทำงาน
ฉันจะได้รับ ชิ้นใหญ่ของชอล์ก
เพราะมันเป็นไปได้มาก
ตกลง
ศาสตราจารย์: OK
เริ่มต้นให้กับแถวแรก
เราจะเริ่มต้นมีแล้วพวกคุณ อาจจะสามารถทำงานผ่านบางมากขึ้น
ตกลง
เท่ากับ b คูณคดังนั้นสิ่งที่เป็น?
มันไม่ใช่คำถามเคล็ดลับฉันสัญญา
>> นักเรียน: 4 ครั้ง 5
>> ศาสตราจารย์: 4 ครั้ง 5
20
ดังนั้นสิ่งที่ B?
นักเรียน: 4
>> ศาสตราจารย์: และค?
นักเรียน: 5
ศาสตราจารย์: 5
แล้วนี้เป็นเพียงการไป ได้รับเครื่องหมาย, เครื่องหมาย B,
เครื่องหมายคใช่มั้ย?
ไม่เลว
มันเป็นเรื่องง่ายพอ
ตกลง
ดังนั้นหนึ่งต่อไป
เท่ากับครั้งคในกรณีที่ ใครที่ไม่คุ้นเคยกับที่
ทุกคนคุ้นเคย กับเวลาเท่ากับ?
ตกลงทั้งหมดนี้ means-- นี้ ชวเลขสำหรับเท่ากับครั้งค
นอกจากนี้คุณยังสามารถทำมันได้กับส่วน ด้วยนอกจากนี้ยังมีการลบ
ที่คุณสามารถทำได้เท่ากับหรือบวกเท่ากับค หมายความว่าเท่ากับบวก c ลบเท่ากับ
คจะเท่ากับลบค
มันเป็นเพียงน้ำตาล syntactic
>> ดังนั้นในกรณีนี้จะมีค่าเท่ากับ ครั้งคจะให้เราอะไร?
อีกครั้งไม่ใช่คำถามเคล็ดลับ
>> นักเรียน: 100
>> ศาสตราจารย์: 100
ไม่อะไรเปลี่ยน?
เลขที่
บางทีในที่สุดผมก็จะได้รับ ดีกว่าที่เครื่องหมายของฉัน
>> นักเรียน: OK ขออภัยคุณไม่ได้รับ 100?
ศาสตราจารย์: OK
ดังนั้นเท่ากับ ครั้งคดังนั้นครั้งค
นักเรียน: โอ้คุณกำลังใช้ สำหรับ previous--
ศาสตราจารย์: ใช่
ดังนั้นเหล่านี้เป็นค่าล่าสุดของเรา
เหล่านี้เป็นสิ่งที่คุณควรจะเป็น ใช้ในขณะที่เราย้ายลง, ตกลง
ดังนั้นขคือการเปลี่ยนแปลงสิ่งเดียวใช่มั้ย?
ดังนั้นขอให้กรอกข้อมูลลงในทุกอย่างอื่น
บีบีเป็นสิ่งที่เป็นไปได้?
ที่จะเป็นหรือไม่เป็น
ดังนั้นสิ่งที่จะทำเช่นนี้?
ดาวต่อปีทำคืออะไร?
>> นักเรียน: รหัสไปยังสถานที่ของปี
>> นักเรียน: ไม่ไม่มาก
ดังนั้นนี่คือการอ้างอิง D
>> นักเรียนดังนั้นขคือค่ามือของปี
>> ศาสตราจารย์: ใช่ดังนั้นต่อปีเป็น ที่อยู่ของใช่มั้ย?
จึงบอกว่าการเดินทางไปยังที่ที่เป็น การจัดเก็บและให้ค่าที่
ดังนั้นสิ่งที่เป็น B?
นักเรียน: 100
ศาสตราจารย์: 100
สมบูรณ์
ตกลงให้เครื่องคอมพิวเตอร์เป็นสิ่งที่เปลี่ยนแปลง
ทุกสิ่งทุกอย่างยังคงเหมือนเดิม
สิ่งที่เป็นเครื่องคอมพิวเตอร์จะเป็นอย่างไร
ที่ได้รับมอบหมายอย่างง่าย
คอมพิวเตอร์จะเท่ากับปีและสิ่งที่เป็นต่อปี?
>> นักเรียน: สัญลักษณ์
ศาสตราจารย์เพอร์เฟ
ตอนนี้เราได้รับที่น่าสนใจ
ตกลงขอแบ่งคนนี้ลง
ประการแรกสิ่งที่ b คูณคเพราะนั่นคือ ส่วนที่ง่ายของคนนี้ใช่มั้ย?
ครั้ง b, c เป็นเท่าไหร่
>> นักเรียน: 500
>> ศาสตราจารย์: ใช่ดังนั้น สิ่งที่คนนี้ทำ
ถ้าหากมันเป็นดาว PB สิ่งที่เปลี่ยนแปลง?
>> นักเรียน: มีอะไรในยกกำลัง
ศาสตราจารย์: มีอะไรในข?
นักเรียน: มีอะไรในพื้นที่ PB ที่จะชี้ไปที่
ศาสตราจารย์: และ PB ชี้ to--
นักเรียน: B.
ศาสตราจารย์: B. ดังนั้นเพียง การเปลี่ยนแปลงสิ่งที่เป็นขขวา
ดังนั้น b คูณ C, 500
นั่นคือสิ่งที่เปลี่ยนแปลงในขณะนี้
เย็น
น่ารัก
พวกคุณจะทำดี
สงวนทำลายคนนี้ลง
C มีการเปลี่ยนแปลงใช่มั้ย?
เพื่อให้เราสามารถกรอกข้อมูลลงในทุกอย่างอื่น
ลองมาดูกัน
ตกลง
เรารู้ว่า C เป็นไปได้ ผลิตภัณฑ์ของตัวเลขสองใช่มั้ย?
สิ่งที่ตัวเลขสอง แต่?
>> นักเรียน: A และ C?
>> ศาสตราจารย์ดังนั้นเป็น ที่เหมาะสมสำหรับคนแรก
ดังนั้นเรา d อ้างอิง P ของใช่มั้ย?
P ของจุดที่จะทำให้เรารู้ว่า นี้เป็นไปได้ 100 ครั้งอะไร?
ครั้งสิ่งที่ไม่จุดพีซีไปยัง?
จุดที่ต้อง
ดังนั้น 100 ครั้ง 100 10,000
ไม่ว่าจะทำให้ความรู้สึก?
เย็น
หน้าแรกยืดผู้ชายแถวสุดท้าย
ตกลง
มีการเปลี่ยนแปลงอะไรที่นี่?
>> นักเรียน: A.
ศาสตราจารย์: A. สมบูรณ์แบบดังนั้น ทุกอย่างอื่นสามารถอยู่เดียวกัน
ตกลง
และสิ่งที่เป็น?
ดังนั้นจึงเป็นสิ่งที่ครั้ง?
นี่คือ PB ดาว
ดังนั้น PB ดาวหมายความว่านี่คือ PB, PB จุดข
>> นักเรียน: 500
>> ศาสตราจารย์: 500
ดังนั้นเราจึงมี 500 ครั้ง 100
นั่นคือ 50,000
ต๊าย!
มองไปที่ว่า
>> นักเรียน: ทำไมเรามี & C สำหรับ last--
ศาสตราจารย์: ขออภัย
นักเรียน: โอ้, OK
ศาสตราจารย์: ฉันไม่ดี
จำนวนมากของการเขียน
ทุกคนที่ดี?
ไม่ได้เลวร้ายเกินไปใช่มั้ย?
ใช้เวลาเพียงเล็กน้อย ในขณะที่การทำงานผ่าน
ถ้าคุณทำลายมันลง เข้าใจในสิ่งที่แต่ละส่วน
จะหมาย to-- เป็น กับทุกสิ่งที่มัน,
yes-- ทำลายมันลงไปเล็ก ๆ น้อย ๆ ปัญหาแล้ว recombine,
และคุณสามารถทำบางสิ่งที่น่ากลัว
มีคำตอบมี แต่เราทำอย่างนั้น
คำนวณตัวชี้
อา
มือของฉันเป็นจั๊วะทั้งหมด
ดังนั้นการเพิ่มหรือลบ int ปรับตัวชี้
โดยขนาดของประเภทของตัวชี้
โปรดจำไว้ว่าทุกชนิด มีขนาดแตกต่างกันอย่างไร
ดังนั้นเหมือนคู่หรือยาวยาว แปดและ int สี่ แต่ถ่านเป็นหนึ่ง
>> ดังนั้นสิ่งที่คุณต้องการจะทำ เท่าไหร่สิ่งหนึ่งที่ต้องจำไว้
เป็นเพียงที่เท่าไหร่ของคุณ ค่าตัวชี้จริงการเปลี่ยนแปลง
จะขึ้นอยู่กับ ประเภทของตัวชี้จะเป็น
ทุกคนที่ดีกับเรื่องนี้?
ผมสามารถลบมันได้หรือไม่
เราดีหรือไม่?
น่ากลัว
>> ดังนั้นหากเรามีตัวชี้บางอย่าง that-- นี้จะ be-- ฉัน
จะทำให้มันชี้ int
มันเก็บนี้
ถ้าคุณจะบอกว่าตัวชี้ บวกหนึ่งสิ่งที่มันจะทำ
คือมันจะไปปรับปรุง โดยขนาดของ int
เพราะนั่นคือ ประเภทของตัวชี้จะเป็น
>> ด้วย C ทุกอย่างเป็น ที่เข้มงวดมากและควบคุม
ตัวชี้ int จะอัปเดตโดย จำนวนของพื้นที่ที่ int จะใช้เวลา
int สี่ไบต์
>> ดังนั้นสิ่งนี้จะกลายเป็น?
คุณเพียงแค่การเพิ่มสี่บนนี้
ตอนนี้ตัวชี้ของคุณจะ be-- ตกลง
>> ดังนั้นถ้ามันเป็นถ่านและเราได้ชี้ บวกหนึ่งสิ่งที่มันจะเป็นตอนนี้หรือไม่
ถ้า started-- แกล้งเรา started-- ตอนนี้มันเป็น 0x08
ตอนนี้ขอให้พูดว่านี่คือ ถ่านชี้และเราได้เพิ่มหนึ่ง
อะไรมันจะเปลี่ยนไป?
วิธีการหลายไบต์ถ่านคืออะไร?
>> ผู้ชม: หนึ่ง
>> ลำโพง 1: หนึ่ง
ผู้ชม: ดังนั้น 0x09
ลำโพง 1: ดังนั้นมันจะเก้า
ดังนั้นสิ่งเดียวที่ต้องจำ
เพียงเมื่อคุณเพิ่มหนึ่งก็ไม่ได้ เพิ่มหนึ่งเว้นแต่จะเป็นถ่าน
มันเพิ่มจำนวน ไบต์ชนิดว่ามันเป็นที่
ซึ่งเป็นเหตุผลที่เรามี สมการนี​​้ขึ้นที่นี่
ดังนั้นจึงเป็นครั้ง int ขนาด ประเภทของตัวชี้
>> ดังนั้นเราจึงมีตัวอย่างที่นี่
และได้รับมอบหมายให้ว่าค่า, 0x4, เมื่อเราได้และบวกเท่ากับหนึ่ง
อะไรอยู่ในนั้นมีอะไร ใน x, ไม่เปลี่ยนแปลง
สิ่งที่ไม่เปลี่ยนแปลงเป็นสิ่งที่อยู่ในและ
ที่อยู่และเก็บไว้ในการปรับปรุงโดยสี่ เพราะมีสี่ไบต์ใน int
และเป็นตัวชี้ int
>> สิทธิ์ทั้งหมด
ดังนั้นตอนนี้เรามีการออกกำลังกายอื่น
ดังนั้นคำถามคือสิ่งที่จะพิมพ์
ความคิดใด?
>> ผู้ชม: จำนวนของ ตัวอักษรในแมวมีความสุข?
ลำโพง 1: แน่นอน
ดังนั้นเช่นเดียวกับสายของคุณ
ทุกคนได้รับที่?
เราต้องการที่จะเดินผ่านมันได้หรือไม่
>> ใช่ตกลง
ดังนั้นสิ่งที่เรามีตรงนี้ฉัน เช่นนี้มากขึ้น
ฉันจะได้ไม่ต้อง [ไม่ได้ยิน] ขัน
>> ดังนั้นเราจึงมีสตริงของเราที่นี่แมวมีความสุข
น่ารัก
เรามีบางอย่างที่เคาน์เตอร์ เรากำลังติดตามความเคลื่อนไหวของ
ดังนั้นเราจึงมีบางตัวชี้ถ่าน * ที่เพิ่งถูกตั้งค่าเท่ากับ str
สิ่งนี้จะทำคือมัน การกำหนดตัวชี้บางอย่าง
ที่จุดเริ่มต้นของสตริงของคุณ
เพราะผมมั่นใจว่ามัน ถูกกล่าวถึงในการบรรยาย
เราได้ให้พวกคุณนี้ ชนิดของข้อมูลที่เรียกว่าสตริง
>> แต่สตริงจริงๆเป็นเพียง อาเรย์เเล้เช่น char *
มันเป็นตัวชี้ไปยังพวงของตัวละคร ที่มีความต่อเนื่องกันในหน่วยความจำ
ดังนั้นเพียงแค่นี้ชุดมัน เท่ากับสตริงใด ๆ ที่เป็น
ระบุที่ ตัวอักษรตัวแรกของมันคือ
ดังนั้นนี่เป็นเพียงการตั้งค่าบางจุด เท่ากับเริ่มต้นของสตริง
ทุกคนที่ดีมี?
เย็น
>> ดังนั้นนี่คือ dereferencing ชี้ของเรา
ดังนั้นมันจริงจะ ให้เราค่าบางอย่างในที่นี่
ในสายของเราที่เรากำลังพูดถึง
และเรากำลังจะบอกว่าตราบใดที่ มันไม่เป็นโมฆะเทอร์มิ
เพื่อให้ไปจนกว่าคุณจะได้รับ ที่จุดสิ้นสุดของสตริง
การปรับปรุงตัวชี้ของคุณโดยหนึ่ง
ดังนั้น R ก็จริงจะปรับปรุงโดยหนึ่ง ในแต่ละครั้งเพราะเป็นถ่าน,
ถ่าน *
>> ดังนั้นมันจะผ่านไป
มันจะปรับปรุง
ดังนั้นครั้งแรกที่ทำงาน มันเป็นไปได้ที่นี่ที่ชั่วโมง
มันจะปรับปรุง
>> มันจะเป็น
มันจะเป็น P, Y, และอื่น ๆ และอื่น ๆ
เราจะปรับปรุงเคาน์เตอร์
เมื่อมันมาถึงจุดสิ้นสุดมัน เพียงแค่พิมพ์ว่าไกลก็ยังมีอากาศ
ใช่
>> ผู้ชม: ดังนั้นมันนับ พื้นที่ที่เป็นหนึ่งใช่มั้ย?
ตกลง
>> ลำโพง 1: คิดอย่างนั้น
นั่นคือคำถามที่
>> ผู้ชม: [ไม่ได้ยิน]
>> ลำโพง 1: ไม่ต้องกังวล
นี้ฉันจะทำอย่างนั้น
ทั้งหมดขวาดังนั้นสิ่งหนึ่งที่ฉัน เข้าใจว่ามีอาร์เรย์
คุณยังสามารถรักษามันเป็น ตัวชี้เพราะอาร์เรย์เป็นเพียง
จุดอย่างต่อเนื่องของหน่วยความจำ
>> เพื่อให้คุณสามารถรักษาได้ด้วยวิธีเดียวกัน
คุณสามารถจัดการกับพวกเขา กับคำแนะนำด้วย
ดังนั้นแทนที่จะทำในเรื่องนี้ กรณีสิ่งที่คล้าย
จะเป็นอาร์เรย์ 0 เท่ากับ 1
>> แต่ในทางเดียวกันว่า สตริงจะถูกกำหนด
โดยเริ่มจากที่ ตัวละครแรกคือ
อาร์เรย์จะถูกกำหนดโดย ที่องค์ประกอบแรกของมันคือ
เพราะเรารู้ว่าเราไม่ รับประกันว่าสิ่งเหล่านี้
เป็นไปได้อย่างต่อเนื่อง บล็อกของหน่วยความจำ
นั่นคือสิ่งที่ช่วยให้เราสามารถทำเช่นนี้
เรารู้ว่าพวกเขากำลังอย่างต่อเนื่อง บล็อกของหน่วยความจำ
>> ดังนั้นในกรณีนี้โดย dereferencing เพียงอาร์เรย์ที่บอกเรา
ตกลงไปที่จุดเริ่มต้นของ อาเรย์ซึ่งเป็นที่นี่
เพื่อให้คุณสามารถตั้งค่าเท่ากับหนึ่ง
และในกรณีนี้สิ่งที่อาเรย์ของคุณ ชนิดคือเมื่อคุณอัปเดตได้โดยหนึ่ง
ที่เช่นเดียวกับการปรับปรุง ไปยังหน้าถัดไป
คุณสามารถทำเช่นนั้นเพราะคุณ รู้ว่าสิ่งที่อยู่ในอาเรย์ของคุณ
ดังนั้นจึงรู้วิธีมากที่จะ ปรับปรุงตัวชี้ของคุณโดย
สิ่งที่อยู่ในการปรับปรุงเพื่อให้ ว่าคุณจะอยู่ที่ช่องถัดไป
>> ดังนั้นนี่เป็นเพียงวิธีที่แตกต่างกัน การเขียนอาร์เรย์ 0 เท่ากับ 1,
อาร์เรย์ 1 เท่ากับ 2 อาร์เรย์ วงเล็บ 2 เท่ากับ 3
มันเป็นเพียงวิธีการที่จะคิดเกี่ยวกับมันอีก
เพราะพวกเขามีอย่างต่อเนื่อง บล็อกในหน่วยความจำ
คุณสามารถดูพวกเขาทั้งสอง โดยอาร์เรย์สัญลักษณ์โดย
ซึ่งผมเอง หา easier-- แต่อาจจะ
คุณจะต้องจัดการกับมัน อย่างเคร่งครัดโดยอยู่หน่วยความจำ
และนี่คือวิธีที่คุณจะทำอย่างนั้น
ชนิดของอื่น ๆ อีกมากมายเช่น สิ่งดีๆที่คุณสามารถทำ
เมื่อเทียบกับสิ่งที่อาจจะไม่ได้คุณ จริงที่เกิดขึ้นในการดำเนินการ
>> ผมใช้มันใน 61
พวกคุณอาจไม่จำเป็นต้อง กังวลเกี่ยวกับมันมากเกินไป
แต่ถ้าคุณสนใจ ใช้เวลา 61 ปีต่อไป
เราอยู่ในพวกยืดบ้าน
ฉันรู้ว่ามันยาว
หน่วยความจำแบบไดนามิก Allocation-- เพื่อให้เรารู้ว่า
ของสิ่งที่เมื่อเราได้พูดคุยในช่วง ส่วนแรกของเราด้วยกัน
เรามองที่แลกเปลี่ยน ฟังก์ชั่นที่มันเป็น
นอกขอบเขตของฟังก์ชั่นหลักของเรา
และเราก็ผ่านในค่าเหล่านี้ ที่เป็นสำเนาได้อย่างมีประสิทธิภาพ
>> และเมื่อเสร็จสิ้นการแลกเปลี่ยน รันก็เหลือเพียงกอง
โปรดจำไว้ว่าเรามี กองกรอบสำหรับการแลกเปลี่ยน
มันใบและผู้ที่ ค่าออกกับมัน
และพวกเขาก็หายไป
เราไม่สามารถทำอะไร กับพวกเขาและเราก็เศร้า
เพราะเราไม่สามารถเปลี่ยนค่านิยมของเรา
>> แต่ด้วย C ที่ผมกล่าวถึงคุณ มีจำนวนมากที่มีอำนาจเหนือหน่วยความจำ
ดังนั้นสิ่งที่คุณสามารถทำได้คือการที่คุณสามารถ จัดสรรสิ่งที่อยู่ในกองที่นี่
ที่จะอยู่ที่นั่นจนกระทั่ง คุณบอกพวกเขาเป็นอย่างอื่น
>> พวกเขาเหมือนเด็กที่ดี
พวกเขาอยู่ที่นั่น
พวกเขาไม่ได้ออกจาก
พวกเขาจะอยู่ที่นั่นจนกว่าคุณจะ เหมือนตกลงคุณสามารถไปออกไป
>> ในขณะที่สิ่งที่อยู่ในกอง who-- พวกเขากำลังเหมือนเด็กซน
พวกเขาก็จะวิ่งหนีเมื่อคุณต้องการ ที่จะมีและพวกเขาก็กำลังไป
คุณไม่สามารถรับพวกเขากลับมา
>> ดังนั้นกองเท่าไหร่เราจะ พูดคุยเกี่ยวกับ malloc และฟรีที่
ผมมั่นใจว่าพวกคุณ ได้ยินเกี่ยวกับในการบรรยาย
และที่พื้นทาง ที่จะมีข้อมูลถาวรมาก
เพื่อให้คุณสามารถเก็บข้อมูล รอบตราบเท่าที่คุณต้องการ
Mhm
>> ผู้ชม: คุณสามารถกำหนดกองและสแต็?
พวกเขาชอบที่จะนำสิ่งที่?
>> ลำโพง 1: ดังนั้นพวกเขากำลัง โดยทั่วไปพวกเขากำลัง just--
วิธีที่เราดูเพียงแค่ความทรงจำ
ดังนั้นกองเป็นเพียงสถานที่ที่ หน่วยความจำมีการจัดสรรแบบไดนามิก
ในขณะที่กองหมาย มากขึ้นในกองเฟรม
ที่มีศูนย์กลางในการ ฟังก์ชั่นที่มีการทำงานจริง
คุณไม่ได้จริงๆมีการควบคุม
>> ความแตกต่างใหญ่คุณมีการควบคุม กว่ากองถ้าคุณต้องการ
คุณมีการควบคุมน้อยกว่ากอง
สแต็คขึ้นอยู่กับ ฟังก์ชั่นที่กำลังทำงาน
และเพื่อที่พวกเขาเป็น วิ่งและว่าสิ่งที่มีการส่งคืน
ในขณะที่มีกองเป็น เราจะเห็นคุณสามารถพูดได้ว่า
ตกลงผมต้องการค่านี้จะเป็น รอบจนกว่าฉันจะบอกคุณเป็นอย่างอื่น
คุณยังไม่ได้รับอนุญาตให้กำจัดมัน
คุณไม่ได้รับอนุญาตที่จะแทนที่มัน
คุณกำลังจะให้มันไปรอบ ๆ ตราบเท่าที่ผมบอกคุณ
คุณจะได้รับที่จะเป็นเจ้านายในกอง, ในขณะที่ stack-- บางทีถ้าคุณ
เช่น finagle วิธีการของคุณ คุณสามารถเป็นเจ้านาย
แต่ไม่มาก
และเป็นจริงเพียงแค่ความทรงจำ
มันเป็นวิธีการที่แตกต่างกันเพียง การอ้างถึงหน่วยความจำ
>> เย็น
ดังนั้นด้วยที่วิธีการ ควบคุมหน่วยความจำของคุณ
มันเป็นกับ malloc ซึ่ง คุณกำลังจะได้รับการใช้งาน
ดังนั้นจึงเป็นเพียงระยะสั้น สำหรับการจัดสรรหน่วยความจำ
นั่นคือทั้งหมดที่มันเป็น
มีพวงของเย็นอื่น ๆ เป็น ฟังก์ชั่นที่มี alloc ในตอนท้าย
และพวกเขายืนสำหรับสิ่งที่แตกต่างกัน
>> ดังนั้นเมื่อคุณจำเป็นต้องมีการจัดเก็บข้อมูลที่ต้องการ จะอยู่ได้นานกว่าการทำงานปัจจุบันของคุณเพื่อ
ว่าเมื่อปัจจุบันของคุณ ฟังก์ชั่นวิ่งออกไป
คุณยังมีข้อมูลที่คุณ ได้จากว่าคุณต้องการที่จะใช้ malloc
ที่จะเริ่มต้นมันในกอง
และเช่นเดียวกับที่ผมพูดและให้ บอกว่าคุณจะให้มันมี
จนกว่าคุณจะบอกได้ว่ามันเป็นอย่างอื่น ซึ่งเป็นสิ่งที่สำคัญที่นี่
>> ดังนั้นสิ่งหนึ่งที่จะสังเกตเห็นและ ที่มักจะเป็นสิ่งที่สำคัญจริงๆ
คือที่นี้ sizeof เป็นซุปเปอร์ประโยชน์ที่จะใช้
เพราะขึ้นอยู่กับชนิด ของเครื่องที่คุณกำลังทำงาน
มันอาจจะมีจำนวนแตกต่างกัน หน่วยความจำที่จะใช้เวลา
ดังนั้นคุณจึงต้องการที่จะใช้ขนาดของสิ่งที่ ที่คุณไม่ได้ขึ้นอยู่กับเครื่อง,
เพื่อให้รหัสของคุณจะ ทำงานบนเครื่องใด
>> และนี่เป็นเพียงส่วนหนึ่ง ในการเขียนโค้ดที่ดี
หากการทำงานในหนึ่งเครื่อง, แต่ไม่ใด ๆ ของผู้อื่น
ว่ามีประโยชน์เป็นโปรแกรมของคุณ?
ดังนั้นคุณจึงต้องการที่จะ ตรวจสอบให้แน่ใจและใช้ sizeof
>> ผู้ชม: เพ​​ื่อให้เป็นที่ชอบ ขนาด 10 นิ้ว [ไม่ได้ยิน]
>> ลำโพง 1: นี่คือขนาดของ 10 ints
ใช่
ดังนั้นขนาดของ ints จะกลับมา เท่าไหร่หนึ่ง int ใช้
หรือขนาดของถ่านวิธี เท่าไหร่หนึ่งถ่านใช้
แล้วกี่บล็อก คุณที่ต้องการได้หรือไม่
>> ดังนั้นในกรณีนี้เราต้องการบางสิ่งบางอย่าง ที่เราสามารถจัดเก็บ 10 ints เพื่อ
และมันจะทำงานโดยไม่คำนึงถึง ของเครื่องซึ่งเป็นเย็น
ดังนั้นวิธีที่หลายไบต์จะ ที่จริงให้คุณ?
คณิตศาสตร์ด่วน
>> ผู้ชม: 40
ลำโพง 1: 40
เผง
ดังนั้นอีกสิ่งที่ใหญ่
ตัวชี้หรือ malloc สามารถกลับ null
>> ดังนั้นอีกครั้งควรตรวจสอบให้ ดูว่าจะกลับมาเป็นโมฆะ
ก่อนที่คุณจะพยายามทำอะไรกับมัน
ถ้าคุณพยายามและ dereference ชี้ตอนนี้
ก็แค่ไป Segfault เพราะคุณไปและพยายาม
สัมผัส null เมื่อคุณไม่ควรจะมี
ดังนั้นควรตรวจสอบสำหรับ null
อีกครั้งที่คุณสามารถทำได้
>> มันอาจจะกลับมาเป็นโมฆะ
มันจะกลับ null ถ้าคุณทั้งสอง ออกจากพื้นที่หรือด้วยเหตุผลใด
มันวิ่งเข้าไปในข้อผิดพลาดหน่วยความจำบาง
มันบางครั้งก็กลับ null
ดังนั้นคุณก็ต้องตรวจสอบมัน
ที่สไลด์ทั้งหมดนี้จะบอกว่า
และแล้วสิ่งที่เรามี นี่คือการเรียกร้องที่จะเป็นอิสระ
ดังนั้นในทางเดียวกันว่าถ้าคุณ เปิดแฟ้มที่คุณต้องปิดไฟล์
ถ้าคุณหน่วยความจำ malloc คุณ คุณต้องฟรีหน่วยความจำที่
และพวกคุณจะได้รับ ที่จะทำสิ่งที่เจ๋งจริงๆ
>> และมีโปรแกรมที่คุณสามารถใช้กับ ดูว่าคุณเคยรั่วไหลของหน่วยความจำ
แต่คุณไม่ต้องการที่จะรั่วไหลของหน่วยความจำ
มันไม่ดีจริงๆ
เพียงแค่สิ่งที่เลอะ
>> มันไม่ดีที่จะทำเช่นเดียวกับการเขียนโปรแกรม ที่ชาญฉลาดสำหรับประสิทธิภาพในการออกแบบ
แต่มันก็เป็นเพียงแค่ชนิด ของไม่ดีสำหรับคอมพิวเตอร์ของคุณ
ดังนั้นเพียงแค่สิ่งที่ฟรี เมื่อคุณ malloc พวกเขา
>> พวกคุณเห็น symmetries ที่นี่
ง่ายสุด
เพียงแค่ฟรีแล้ว สิ่งที่ตัวชี้ของคุณ
สิ่งที่ชื่อของ ตัวชี้ของคุณและมัน
จะดูแลแก้มันสำหรับคุณ
เย็น
>> แล้วเรามีนี้
ดังนั้นเราจึงกำลังจะ เดินผ่านโปรแกรมนี้
แล้วพวกคุณทำ
>> ดังนั้น [ไม่ได้ยิน] หลักเพียง
ดังนั้นเราจึงมีบางตัวชี้ int *
ดังนั้นเราจึงมีตัวชี้ ที่จะถือ ints
และวิธีการที่หลาย ints มันไปถือ?
เพียงหนึ่ง
ขนาดของ int
>> เราตรวจสอบเพื่อดูว่า ชี้เป็นโมฆะเพราะมัน
คือเราอยากจะบอกว่าไม่ได้ทำอะไร
มันไม่ดี
ดังนั้นเราจึงพิมพ์ข้อผิดพลาดบางส่วนออกจาก หน่วยความจำส่วนใหญ่มักจะกลับมาที่ 1
เป็นพวกคุณจะใช้ในการ
>> และจากนั้นเราได้ที่นี่เรา dereference ตัวชี้ของเรา
ดังนั้นนั่นหมายความว่าเรากำลังจะไปเก็บ บางสิ่งบางอย่างที่สถานที่ให้กับเรา
int * ตัวชี้หรือ malloc กลับ ที่อยู่ของสถ​​านที่ที่กำหนดไว้นี้
หน่วยความจำสำหรับคุณ
ดังนั้นมันเป็นพื้น ให้คุณ like-- ถ้าคุณ
คิดเกี่ยวกับพวงของ บ้านในละแวกใกล้เคียง
ที่คุณต้องการที่จะนำ ในเฟอร์นิเจอร์ของคุณ malloc
ก็เหมือนตกลงคุณจะได้รับ เพื่อไปที่บ้านสาม
และมันจะช่วยให้คุณ ที่อยู่ของบ้านสาม
>> ดังนั้นตอนนี้ในขณะนี้ ร้านค้าตัวชี้ที่อยู่
เก็บที่อยู่ของบ้านของคุณ
PTR * หมายความว่าตกลงฉันที่บ้านของฉัน
เย็น
ฉันต้องได้รับจำนวนเต็มบาง
>> ดังนั้นที่คุณถามหาใครสักคน เพื่อให้เฟอร์นิเจอร์ตอนนี้
เพื่อให้คุณได้ int บาง
และมันทำให้มันอยู่ในตัวชี้ของคุณ ที่มันชี้ไปที่
>> และจากนั้นก็เพียงแค่พิมพ์ ออกคุณเข้ามาทุกที่
และอีกครั้งอ้างอิง
ดังนั้นนี่เป็นเหมือนที่คุณไปนี้ ที่อยู่และที่คุณเห็นสิ่งที่อยู่ที่นั่น
เย็น?
>> แล้วแน่นอนว่าเราเป็นอิสระตัวชี้ของเรา
อย่าลืมที่จะปลดปล่อยตัวชี้ของคุณ
อย่าลืมที่จะตรวจสอบเป็นโมฆะ
อย่าลืมที่จะปลดปล่อยตัวชี้ของคุณ
คุณมีสองสิ่งที่คุณจำได้จาก นี้หรือที่คุณควรจำไว้
ใช่
ผู้ชม: สิ่งที่ [ไม่ได้ยิน] เช่นนั้น char * S
เรามาว่าไม่เคยเป็นอิสระเหล่านั้นหรือไม่
>> ลำโพง 1: หืม?
>> ผู้ชม: เป็นคนที่ชอบสตริง?
คุณบอกว่าสตริง เช่นเดียวกับถ่าน s * ใช่มั้ย?
ดังนั้นทำไมเราไม่ฟรีสตริง?
>> ลำโพงที่ 1: คุณเท่านั้นที่จะ ฟรีหากคุณกำลัง mallocing
ผู้ชม: โอ้ถ้าคุณกำลัง mallocing
ลำโพง 1: ดังนั้น malloc และเป็นอิสระเป็นสองสิ่งที่
ที่คุณควรมีร่วมกัน
ฉเปิดฉใกล้สองสิ่ง คุณควรจะมีร่วมกัน
ในทั้งสองกรณีผู้ตรวจสอบเป็นโมฆะ
ใช่
>> ผู้ชม: ดังนั้นฟรีเป็นเพียง ช่วยให้สิ่งอื่น
จะถูกเก็บไว้ที่นั่นหลังจากที่ โปรแกรมนี้ได้ใช้มันได้หรือไม่
>> ลำโพง 1: มันก็แค่บอกว่า ตกลงฉันทำกับนี้
คุณไม่จำเป็นต้องที่จะให้มันไปรอบ ๆ
มิฉะนั้นคอมพิวเตอร์ของคุณจะ เช่นเดียวกับพยายามให้มันมี
แล้วคุณ can't-- มันวิ่ง เป็นปัญหาหน่วยความจำในภายหลัง
คุณเคยต้องการที่จะเป็นอิสระมันเพราะ มันบอกเครื่องคอมพิวเตอร์ของคุณตกลงฉัน
ทำกับจุดของหน่วยความจำนี้
คุณสามารถมีได้กลับมา สำหรับผมที่จะใช้ในภายหลัง
เย็น?
ใช่
>> ผู้ชม: ดังนั้นเราจึงใช้% d เพียง เพราะสองครั้งที่กลับมา
หรือทำไมเท่าไหร่ [ไม่ได้ยิน]
>> ผู้ชม: คุณสามารถใช้% i?
>> ลำโพง 1: คุณสามารถใช้% ฉัน
คำถามใด ๆ นาทีสุดท้าย?
เอาเลย
ผู้ชม: ฉันเพียงแค่มีคำถามอย่างรวดเร็ว
ดังนั้นตัวแปร PTR, that's-- เหมือนมี int PTR * = malloc,
ที่เพียงแค่บอกว่ามันเป็น ชี้ไปที่สถานที่ใน memory--
ลำโพง 1: คุณต้องการ [ไม่ได้ยิน]
ผู้ชม: --that เป็น ขนาดเเล้ไม่มีก็ OK
แต่มันเป็นเพียงการชี้ไปที่สถานที่ใน หน่วยความจำที่เช่นเดียวกับสี่ไบต์
ลำโพง 1: ขวา
ดังนั้น malloc ขนาดของ int กล่าวว่า ตกลงผมจะไปทำงานออก
หาสี่ไบต์ของหน่วยความจำสำหรับคุณ
เมื่อพบว่าสี่ ไบต์ของหน่วยความจำ
ช่วยให้คุณสำรองอยู่ ในการที่จะเริ่มต้น
และนั่นคือสิ่งที่เก็บไว้ ในตัวชี้หรือ PTR
ดี
พวกคุณดูสับสนน้อยกว่ามากที่สุด คนเมื่อฉันพูดคุยเกี่ยวกับตัวชี้
ดังนั้นฉันรู้สึกที่ดีงามได้ในขณะนี้
>> สิทธิ์ทั้งหมด
และเช่นเคยที่พวกคุณควรจะมี อากาศเกรด pset2 ของคุณตอนนี้
ฉันรู้ว่ามีบาง wonky สิ่งที่จะกล่าวว่าสูตรไม่ถูกต้อง
หรือสิ่งที่
หากคุณได้รับที่ทั้งหมด เกรดที่ถูกต้องในด้านของฉัน
เพื่อให้สามารถส่งคุณ ภาพหน้าจอของการเรียนของคุณ
เพียงแค่แจ้งให้เราทราบเช่นกันถ้าคุณอยู่ หายไปเกรดใด ๆ หรือบางสิ่งบางอย่าง
ดูเหมือนจะไม่ได้ทำให้ความรู้สึก
มาหาฉัน
>> ฉันได้รับสุดภูมิใจในตัวคุณ คนอยู่แล้วเพื่อให้มันขึ้น
และมีส่วนที่เหลือที่ดีของสัปดาห์ของคุณ
ฉันแน่ใจว่าฉันจะเห็นบางส่วน ของคุณที่เวลาทำงาน