Data Types, Arrays, Strings and Pointers in C
Tour of C Data Types, Arrays, Strings and Pointers in C
1
Data Types
C
char short int long float double long double
signed/ unsigned ? char, short, int, long
2
Like Java, Like C
Operators same as in Java
- Arithmetic z int i = i+1; i++; i--; i*=2; z +, -, *, /, %
- Relational and logical z , =, ==, != z &&, ||, &, |, !
Syntax same as in Java
- if() { } else { } - while() { } - do { } while (); - for(i = 1; i s2
strtok ? read the Sun manual pages to find out what this function does
16
Pointers in C
What are Pointers?
C
A pointer is a variable that holds the address of another variable (object)
Suppose that we have an integer variable
int i;
and wish to have a pointer point to this variable. Thus we need to know the memory address of i.
How do we know the address of i? ... &i
is the address of i. The operator & is called the ADDRESS-OF operator.
17
18
Pointers Made Easy (1)
C
We can declare that a pointer iPtr points to an int by saying
int * iPtr;
(&i) 100
5
i
... ...
Suppose that we have:
int i = 5; int j = 7;
(&j) 180
7
j
260
100
iPtr
We can make iPtr point to i by assigning to iPtr the memory location where i is stored. Thus
iPtr = &i;
sets iPtr to point to i.
iPtr
i
5
19
Pointers Made Easy (2)
C
We can also initialize iPtr at the point of declaration:
int i; int * iPtr = &i;
iPtr
i ???
Here is a common error:
int i; int * iPtr = i; // ERROR: i is not an address
20
Declaring Pointers
C
When declaring several pointer variables in one statement - the asterisk does not distribute throughout the statement:
int *p, q;
equivalent to
int * p, * q; equivalent to
int * p; int q;
int * p; int * q;
21
Dereference *
C
The value of the data being pointed at is obtained by using the operator *
If p is a pointer value, then
*p
refers to the variable pointed to by p. Since reference is another name for address, the operator * is called dereference operator.
22
Dereference Example
C
int i; int * p = &i; *p = 101;
(*p)++;
i
p
???
i ???
p
i
101
Equivalent to i = 101;
p
i
102
Equivalent to i++;
? A dereferenced pointer behaves exactly like the variable it points to.
23
Note the Difference ...
C
ptr1
i
5
ptr2
j
7
Initial state
ptr1
i
5
ptr1
i
7
ptr2
j
7
ptr2
j
7
After
ptr1 = ptr2; starting from initial
state
After
*ptr1 = *ptr2; starting from initial
state
24
Uninitialized Pointers
C
Suppose that we have the following declarations:
int i; int * iPtr; *iPtr = 100;
iPtr
i ???
What is the value of iPtr? Undefined. What could happen?
- iPtr could hold an address that does not make sense at all, causing your program to crash if dereferenced.
- iPtr could point to an address which is accessible. Then the assignment *iPtr = 100; would accidentally change some other data, which could result in a crash at a later point. This is a tough error to detect since the cause and symptom may be widely separated in time.
25
Putting it all Together...
C
... with the help of a simple example:
int i, value; int * iPtr; // declares iPtr to be a pointer to an integer
i = 510; iPtr = &i; value = *iPtr;
// Step 1 // Step 2 // Step 3
Step 1
iPtr ???
i 510
value ???
Step 2
iPtr
i 510
value ???
Step 3
iPtr
i
value
510
510
26
The null Pointer
C
The value of a pointer can be:
- some garbage (pointer unassigned) - the address of some variable (eg., int * p = &i; ) - the constant 0 (the null pointer, points to absolutely nothing)
somePointer = 0;
This statement does not cause somePointer to point to memory location zero; it guarantees that somePointer does not point to anything
The null pointer is a special pointer value that a program can test for:
if (somePointer == 0) ...
27
Arrays and Pointers
28
Arrays and Pointers
C
An array name is basically a constant pointer
Consider the declaration: char a[3];
&a[0] 1000 &a[1] 1004 &a[2] 1008
...
a[0] a[1] a[2]
...
&a 2160 1000
The compiler allocates three integers for the array object. These are referenced as a[0], a[1], a[2] and occupy a contiguous block of memory.
The value of a is exactly &a[0], the address of the
first integer in the array
29
Arrays and Pointers - Examples
C
Consider the following declarations:
a int a[5] = {1, 2, 3};
123??
p int * p;
p = &a[2];
a 123??
p
You can use the index [] operator with a pointer:
p[0] = 17; p[1] = 23;
a 1 2 17 23 ?
Indexing can be used with any pointer, but it only makes sense when the pointer points to an array
p 30
................
................
In order to avoid copyright disputes, this page is only a partial summary.
To fulfill the demand for quickly locating and searching documents.
It is intelligent file search solution for home and business.
Related download
- arrays in c duke university
- declare a char and initialize it
- lecture 4 notes arrays and strings
- c programming ppt slides pdf on arrays
- c programming and embedded systems
- 10 3 1 reading a string from the keyboard arrays and strings
- storage of string literals using gcc in a unix environment
- a grammar for the c programming language version s21
- data types arrays strings and pointers in c
Related searches
- data types in pandas dataframe
- data types in pandas
- converting data types in python
- basic data types in python
- data types sas
- data types sql
- powershell concatenate strings and variable
- sql data types examples
- replacement bow strings and cables
- bear bow strings and cables
- matlab join strings and variables
- find data types of columns in dataframe