CS1010 Notes
  • Welcome
  • Lec/Tut/Lab/Exes
    • Lecture
      • Lec 01 - Computational Problem Solving
      • Lec 02 - Functions and Types
      • Lec 03 - Basic C Programming
      • Lec 04 - Conditionals
      • Lec 05 - Loops
      • Lec 06 - Call Stacks, Arrays
        • Diagnostic Quiz
      • Lec 07 - Pointers, Memory management
        • Diagnostic Quiz
      • Lec 08 - Multi-d Array, Efficiency
        • Diagnostic Quiz
      • Lec 09 - Searching and Sorting
        • Diagnostic Quiz
      • Lec 10 - More Recursion
        • Diagnostic Quiz
      • Lec 11 - Strcut & Standard I/O
        • Diagnostic Quiz
      • Lec 12 - Recap
    • Tutorial
      • Tut 01 - Computational Problem-Solving
      • Tut 02 - Functions and Conditionals
      • Tut 03 - More on Conditionals
      • Tut 04 - Loops
      • Tut 08 - Searching and Sorting
    • Lab
      • Lab 01 - Unix/Vim Setup
      • Lab 02 - Debugging
      • Lab 03 - Assert
      • Lab 04 - Test Cases
      • Lab 05 - Arrays
      • Lab 06 - Memory Errors
      • Lab 07 - Compiling with Clang
      • Lab 08 - C Preprocessor
      • Lab 09 - Backtracking
      • Lab 10 - Struct and Wrap up
    • Exercises
      • Exercise 3 - Fixed-Length Arrays
      • Exercise 4 - Dynamic Arrays and Strings
      • Exercise 6 - Searching and Sorting
      • Exercise 7 - More Recursion
      • Exercise 8 - Struct
  • Past Year Exam
    • Midterm PE
      • PE1 (AY18/19)
      • PE1 (AY20/21)
      • PE1 (AY21/22)
      • PE0 (AY22/23)
      • PE0 (AY23/24)
    • Midterm Paper
      • Midterm (AY18/19)
      • Midterm (AY20/21)
      • Midterm (AY21/22)
      • Midterm (AY22/23)
    • PE1 Review
      • PE1 (AY23/24)
    • PE2 Review
      • PE2 (AY18/19)
      • PE2 (AY20/21)
      • PE2 (AY21/22)
      • PE2 (AY22/23)
      • PE2 (AY23/24)
    • Final Paper
      • Final (AY18/19)
      • Final (AY20/21)
      • Final (AY21/22)
      • Final (AY22/23)
      • Final (AY23/24)
  • Current Year Exam
    • PE0 (AY24/25)
    • PE1 (AY24/25)
    • PE2 (AY24/25)
    • Final (AY24/25)
  • Toolbox
    • Vim & Unix
    • GDB
  • After CS1010
Powered by GitBook
On this page
  • Problems
  • 8. Compilation Error vs. Runtime Error
  • 11. const in C
  • Tips
Edit on GitHub
  1. Lec/Tut/Lab/Exes
  2. Lecture
  3. Lec 06 - Call Stacks, Arrays

Diagnostic Quiz

PreviousLec 06 - Call Stacks, ArraysNextLec 07 - Pointers, Memory management

Last updated 6 months ago

Problems

8. Compilation Error vs. Runtime Error

Suppose we have the following array declaration:

long per_burger[5] = {3, 2, 1, 15, 5};

Try out the following code. Which one would generate a compilation error?

See the difference between compilation error and runtime error at in Lec 03.

11. const in C

Consider the function declaration below:

void bar(const long a[]) { }

Which of the following statement is FALSE?

In C, the const keyword applies to the thing immediately to its left (or, if there's nothing to the left, it applies to the thing to its right).

So, in this problem, it means we cannot change any element in the array a. But since a is also a pointer variable (See more explanation about why it is not merely an address due to array decay), we can set it to another array.

const long* a means a is a pointer to const, and any attempt to write via a will error out. e.g. *a=10is invalid.

This is different from long* const a, which declares a const pointer a that cannot be reassigned to point to another place. e.g. a=<pointer> is invalid.

Tips

  1. A stack frame stores function parameters and local variables.

  2. When you access the "out of bound" index of an array, it won't generate compilation error, but it may generate runtime error or undefined behavior.

here
Compilation Error vs. Run-Time Error