SlideServe
Menu
Préférences
© SlideServe · v2026

Understanding Pointer Arguments and Arrays in C - Lecture 16 Overview

lilli avatar
14 diapositives · 264 Views · Oct 21, 2014

In this lecture from Dr. Michael Geiger's Spring 2013 course on ECE Application Programming, we delve into the concept of pointer arguments in C programming. The lecture outlines how functions can manage multiple values outside their scope using pointers, the mechanics of passing arguments by value vs. by address, and the basics of defining and manipulating one-dimensional arrays. Students are reminded of upcoming assignments and the importance of understanding the memory addresses and values associated with array elements.

Understanding Pointer Arguments and Arrays in C - Lecture 16 Overview - slide 1
01 / 14Understanding Pointer Arguments and Arrays in C - Lecture 16 Overview
1 / 17

Télécharger la présentation

Understanding Pointer Arguments and Arrays in C - Lecture 16 Overview
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. 16.216ECE Application Programming Instructor: Dr. Michael Geiger Spring 2013 Lecture 16: Pointer arguments

  2. Lecture outline • Announcements/reminders • Program 5 due today • Program 6 to be posted, due 3/20 • Today’s class • Review: Pointer arguments • One dimensional arrays ECE Application Programming: Lecture 16

  3. Review: pointer arguments • Functions can only return one value • Arguments passed by value hold copy of value from calling function • Arguments passed by address hold location of variable in calling function • Argument type is pointer (e.g., int *ptr) • Allows function to change multiple values outside its scope • Dereference pointer to access “value being pointed to”: *ptr ECE Application Programming: Lecture 16

  4. Review of scalar variables Variables (up to now) have: name type (int, float, double, char) address value N 28C4 (int) q 28C8 (float) r 28CC (float) 35 3.14 8.9 e.g. Name type address value N integer 28C4 35 q float 28C8 3.14 r float 28CC 8.9 ECE Application Programming: Lecture 19

  5. Intro to Arrays Any single element of x may be used like any other scalar variable x[0] 45 3044 x[1] 55 3048 x[2] 25 304C x[3] 85 3050 x[4] 75 3054 printf("%d",x[3]); // prints 85 printf("%d",x[7]+x[1]); // prints 115 x[5] 65 3058 x[6] 100 305C x[7] 60 3060 ECE Application Programming: Lecture 19

  6. Declaring Arrays Define an 8 element array: int x[8]; Elements numbered 0 to 7 Arrays in C always start with location 0 (zero based) The initial value of each array element is unknown (just like scalar variables) x[0] ? 3044 x[1] ? 3048 x[2] ? 304C x[3] ? 3050 x[4] ? 3054 x[5] ? 3058 x[6] ? 305C x[7] ? 3060 ECE Application Programming: Lecture 19

  7. Declaring/defining Arrays double A[]={ 1.23, 3.14159, 2.718, 0.7071 }; A[0] 1.23 4430 You can also define the values to be held in the array and instruct the compiler to figure out how many elements are needed. Not putting a value within the [] tells the compiler to determine how many locations are needed. A[1] 3.14159 4438 A[2] 2.718 4440 A[3] 0.7071 4448 ECE Application Programming: Lecture 19

  8. Working with Arrays (input) #include <stdio.h> void main(void){ int x[8]; int i; // get 8 values into x[] for (i=0; i<8; i++) { printf("Enter test %d:",i+1); scanf("%d",&x[i]); } } ECE Application Programming: Lecture 19

  9. Working with Arrays (input) Sample run (user input underlined): Enter test 1:80Enter test 2:75Enter test 3:90Enter test 4:100Enter test 5:65Enter test 6:88Enter test 7:40Enter test 8:90 x[0] 80 x[1] 75 x[2] 90 x[3] 100 x[4] 65 x[5] 88 x[6] 40 x[7] 90 ECE Application Programming: Lecture 19

  10. Pitfalls • What happens if we change previous code to: #include <stdio.h> void main(void){int x[8];inti; float sum, avg; // used later // get 8 values into x[] for (i=0; i<=8; i++) {printf("Enter test %d:",i+1);scanf("%d",&x[i]); } } ECE Application Programming: Lecture 19

  11. Pitfalls (cont.) • Although x has 8 elements, x[8] is not one of those elements! • Compiler will not stop you from accessing elements outside the array • Must make sure you know the size of the array ECE Application Programming: Lecture 19

  12. Example • What does the following program print? int main() { intarr[10]; inti; printf("First loop:\n"); for (i = 0; i < 10; i++) { arr[i] = i * 2; printf("arr[%d] = %d\n", i, arr[i]); } printf("\nSecond loop:\n"); for (i = 0; i < 9; i++) { arr[i] = arr[i] + arr[i + 1]; printf("arr[%d] = %d\n", i, arr[i]); } return 0; } ECE Application Programming: Lecture 19

  13. Example solution First loop: arr[0] = 0 arr[1] = 2 arr[2] = 4 arr[3] = 6 arr[4] = 8 arr[5] = 10 arr[6] = 12 arr[7] = 14 arr[8] = 16 arr[9] = 18 Output continued: Second loop: arr[0] = 2 arr[1] = 6 arr[2] = 10 arr[3] = 14 arr[4] = 18 arr[5] = 22 arr[6] = 26 arr[7] = 30 arr[8] = 34 ECE Application Programming: Lecture 19

  14. Next time • Math library • One dimensional arrays • Reminders: • Program 5 due 3/6 ECE Application Programming: Lecture 16