5. Arrays, Pointers and Strings

Slides:



Advertisements
Similar presentations
Single Variable and a Lot of Variables The declaration int k; float f; reserve one single integer variable called k and one single floating point variable.
Advertisements

What is a pointer? First of all, it is a variable, just like other variables you studied So it has type, storage etc. Difference: it can only store the.
CSCI 171 Presentation 11 Pointers. Pointer Basics.
Pointer applications. Arrays and pointers Name of an array is a pointer constant to the first element whose value cannot be changed Address and name refer.
Kernighan/Ritchie: Kelley/Pohl:
Primitive Data Types There are a number of common objects we encounter and are treated specially by almost any programming language These are called basic.
Pointer. Warning! Dangerous Curves C (and C++) have just about the most powerful, flexible and dangerous pointers in the world. –Most other languages.
Pointers A pointer is a variable that contains memory address as its value. A variable directly contains a specific value. A pointer contains an address.
Pointers: Part I. Why pointers? - low-level, but efficient manipulation of memory - dynamic objects  Objects whose memory is allocated during program.
Arrays and Pointers in C Alan L. Cox
Pointers CSE 2451 Rong Shi.
A First Book of ANSI C Fourth Edition
CP104 Introduction to Programming File I/O Lecture 33 __ 1 File Input/Output Text file and binary files File Input/output File input / output functions.
C Tokens Identifiers Keywords Constants Operators Special symbols.
1 C - Memory Simple Types Arrays Pointers Pointer to Pointer Multi-dimensional Arrays Dynamic Memory Allocation.
7. Pointers, Dynamic Memory 20 th September IIT Kanpur 1C Course, Programming club, Fall 2008.
CSC 2400 Computer Systems I Lecture 5 Pointers and Arrays.
6. More on Pointers 14 th September IIT Kanpur C Course, Programming club, Fall
5. Arrays, Pointers and Strings 7 th September IIT Kanpur C Course, Programming club, Fall
Pointers. What is pointer l Everything stored in a computer program has a memory address. This is especially true of variables. char c=‘y’; int i=2; According.
Pointers A pointer is a variable that contains a memory address as it’s value. The memory address points to the actual data. –A pointer is an indirect.
Review 1 List Data Structure List operations List Implementation Array Linked List.
Constants, Variables and Data types in C The C character Set A character denotes any alphabet, digit or special symbol used to represent information.
Computer Organization and Design Pointers, Arrays and Strings in C Montek Singh Sep 18, 2015 Lab 5 supplement.
Computer And Programming Array and Pointer. Array provides a means to allocating and accessing memory. Pointers, on the other hand, provides a way to.
Pointers in C++. Topics Covered  Introduction to Pointers  Pointers and arrays  Character Pointers, Arrays and Strings  Examples.
Arrays, Part 2 We have already learned how to work with arrays using subscript notation. Example: float myData[] = {3.5, 4.0, 9.34}; myData[0] += 2; printf("myData[0]
CSCI 130 More on Arrays. Multi-dimensional Arrays Multi - Dimensional arrays: –have more than one subscript –can be directly initialized –can be initialized.
C programming---Pointers The first step: visualizing what pointers represent at the machine level. In most modern computers, main memory is divided into.
Pointers & References. Pointers Pointer arithmetic Pointers and arrays Pointer-related typedef’s Pointers and const References.
Scis.regis.edu ● CS-362: Data Structures Week 6 Part 2 Dr. Jesús Borrego 1.
POINTERS IN C Pointer Basics, Pointer Arithmetic, Pointer to arrays and Pointer in functions.
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer Computer Science, IUPUI
Pointers. Addresses in Memory Everything in memory has an address. C allows us to obtain the address that a variable is stored at. scanf() is an example.
Arrays and Pointers (part 1) CSE 2031 Fall July 2016.
Overview Working directly with memory locations is beneficial. In C, pointers allow you to: change values passed as arguments to functions work directly.
Last week: We talked about: History of C Compiler for C programming
Computer Organization and Design Pointers, Arrays and Strings in C
INC 161 , CPE 100 Computer Programming
Chapter 8 Arrays, Strings and Pointers
UNIT 5 C Pointers.
Command Line Arguments
Command Line Arguments
Pointers in C.
Student Book An Introduction
CNG 140 C Programming (Lecture set 10)
INC 161 , CPE 100 Computer Programming
Hassan Khosravi / Geoffrey Tien
CSCI206 - Computer Organization & Programming
Arrays in C.
Pointers.
14th September IIT Kanpur
Arrays C provides the option to the user to combine similar data types into a single entity It followed contiguous.
Object Oriented Programming COP3330 / CGS5409
Lecture 8b: Strings BJ Furman 15OCT2012.
Arrays and Pointers Reference: Chapter , 4.11 CMSC 202.
Lecture 18 Arrays and Pointer Arithmetic
Arrays Strings and Parameter Passing CSCI N305
Outline Defining and using Pointers Operations on pointers
Chapter 2 Array and String Visit to more Learning Resources.
Initializing variables
7. Pointers, Dynamic Memory
Pointer Variables A pointer is a variable that contains a memory address The address is commonly the location of another variable in memory This pointer.
Arrays Arrays A few types Structures of related data items
CS250 Introduction to Computer Science II
Exercise Arrays.
Arrays C provides the option to the user to combine similar data types into a single entity It followed contiguous.
Arrays.
SPL – PS2 C++ Memory Handling.
Introduction to Pointers
Presentation transcript:

5. Arrays, Pointers and Strings 7th September IIT Kanpur C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Arrays An Array is a collection of variables of the same type that are referred to through a common name. Declaration type var_name[size] e.g int A[6]; double d[15]; C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Array Initialization After declaration, array contains some garbage value. Static initialization Run time initialization int month_days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int i; int A[6]; for(i = 0; i < 6; i++) A[i] = 6 - i; C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Memory addresses 0A 0x00001234 23 0x00001235 6C 0x00001236 1D 0x00001237 ‘W’ 0x00001238 ‘o’ 0x00001239 ‘w’ 0x0000123A ‘\0’ 0x0000123B . 0x24680975 0x24680976 0x24680977 0x24680978 Memory is divided up into one byte pieces individually addressed. - minimum data you can request from the memory is 1 byte Each byte has an address. for a 32 bit processor, addressable memory is 232 bytes. To uniquely identify each of the accessible byte you need log2232 = 32 bits C Course, Programming club, Fall 2008

Array - Accessing an element int A[6]; 6 elements of 4 bytes each, total size = 6 x 4 bytes = 24 bytes Read an element Write to an element {program: array_average.c} A[0] A[1] A[2] A[3] A[4] A[5] 0x1000 0x1004 0x1008 0x1012 0x1016 0x1020 6 5 4 3 2 1 int tmp = A[2]; A[3] = 5; C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Strings in C No “Strings” keyword A string is an array of characters. OR char string[] = “hello world”; char *string = “hello world”; C Course, Programming club, Fall 2008

Significance of NULL character ‘\0’ Compiler has to know where the string ends ‘\0’ denotes the end of string {program: hello.c} Some more characters (do $man ascii): ‘\n’ = new line, ‘\t’ = horizontal tab, ‘\v’ = vertical tab, ‘\r’ = carriage return ‘A’ = 0x41, ‘a’ = 0x61, ‘\0’ = 0x00 char string[] = “hello world”; printf(“%s”, string); C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Pointers in C A char pointer points to a single byte. An int pointer points to first of the four bytes. A pointer itself has an address where it is stored in the memory. Pointers are usually four bytes. * is called the dereference operator *p gives the value pointed by p 4 i p & (ampersand) is called the reference operator &i returns the address of variable i int *p;  int* p; int i = 4; p = &i; C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 More about pointers int x = 1, y = 2, z[10]; int *ip; /* A pointer to an int */ ip = &x; /* Address of x */ y = *ip; /* Content of ip */ *ip = 0; /* Clear where ip points */ ip = &z[0]; /* Address of first element of z */ {program: pointer.c} C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Pointer Arithmetic A 32-bit system has 32 bit address space. To store any address, 32 bits are required. Pointer arithmetic : p+1 gives the next memory location assuming cells are of the same type as the base type of p. C Course, Programming club, Fall 2008

Pointer arithmetic: Valid operations pointer +/- integer  pointer pointer - pointer  integer pointer <any operator> pointer  invalid pointer +/- pointer  invalid C Course, Programming club, Fall 2008

Pointer Arithmetic: Example int *p, x = 20; p = &x; printf("p = %p\n", p); printf("p+1 = %p\n", (int*)p+1); printf("p+1 = %p\n", (char*)p+1); printf("p+1 = %p\n", (float*)p+1); printf("p+1 = %p\n", (double*)p+1); Sample output: p = 0022FF70 p+1 = 0022FF74 p+1 = 0022FF71 p+1 = 0022FF78 {program: pointer_arithmetic.c} C Course, Programming club, Fall 2008

C Course, Programming club, Fall 2008 Pointers and arrays Pointers and arrays are tightly coupled. char a[] = “Hello World”; char *p = &a[0]; C Course, Programming club, Fall 2008

Pointers and function arguments Functions only receive copies of the variables passed to them. {program: swap_attempt_1.c} A function needs to know the address of a variable if it is to affect the original variable {program: swap_attempt_2.c} Large items like strings or arrays cannot be passed to functions either. What is passed is the address of “hello world\n” in the memory. printf(“hello world\n”); C Course, Programming club, Fall 2008

2-Dimensional Arrays (Array of arrays) int d[3][2]; Access the point 1, 2 of the array: d[1][2] Initialize (without loops): int d[3][2] = {{1, 2}, {4, 5}, {7, 8}}; C Course, Programming club, Fall 2008

More about 2-Dimensional arrays A Multidimensional array is stored in a row major format. A two dimensional case:  next memory element to d[0][3] is d[1][0] d[0][0] d[0][1] d[0][2] d[0][3] d[1][0] d[1][1] d[1][2] d[1][3] d[2][0] d[2][1] d[2][2] d[2][3] What about memory addresses sequence of a three dimensional array?  next memory element to t[0][0][0] is t[0][0][1] C Course, Programming club, Fall 2008