An Introduction to C Programming How to Write












![Declaring Arrays n Legal array declarations int scores[20]; #define MAX_LINE 80 char line[MAX_LINE]; // Declaring Arrays n Legal array declarations int scores[20]; #define MAX_LINE 80 char line[MAX_LINE]; //](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-13.jpg)
![Initializing Arrays n Legal initializations int scores[5] = { 2, -3, 10, 0, 4 Initializing Arrays n Legal initializations int scores[5] = { 2, -3, 10, 0, 4](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-14.jpg)

![Array Example #include <stdio. h> #define NUM_STUDENTS 70 void set. Nums(int nums[], int size) Array Example #include <stdio. h> #define NUM_STUDENTS 70 void set. Nums(int nums[], int size)](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-16.jpg)


![Common String Functions n int strlen(char str[]); n n int strcpy(char str. To[], char Common String Functions n int strlen(char str[]); n n int strcpy(char str. To[], char](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-19.jpg)








![Pointers and Arrays n char str[32]; char *ptr; n ptr = str ; n Pointers and Arrays n char str[32]; char *ptr; n ptr = str ; n](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-28.jpg)
![Pointers and Arrays n int table [8]; int *ptr ; n ptr = table Pointers and Arrays n int table [8]; int *ptr ; n ptr = table](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-29.jpg)




























- Slides: 57

An Introduction to C Programming

How to Write and Compile C Programs n n n C, C++ and Java Compilers: Microsoft Visual C++, GCC, Borland C Since we will be working on PCs: n Microsoft Visual C++ n n Open new Win 32 Console Application Name it (in “project name”) Click “a hello world application” Go to file view, source files, then the name of your project. cpp

Some Things About C n n Case matters, white space does not Comments go between /* and */ Each statement is followed by a semicolon Execution begins in the main function: int main(int argc, char* argv[]) { /* ignore this */ /* start here */ return 0; /*end here */ }

What are C libraries? n n C is a lightweight language. Most of its intelligence is compartmentalized in libraries. Almost all c programs use the “stdio” or standard input/output library. Many also use the “math” library. To use a library, include the header file (I. e. , “stdio. h”) at the top of the file. For most special purpose libraries (I. e. , math) you need to include the library on the link line. In Visual C++, go to project->settings>object/module libraries.

C Variable Types n n n The most common types are: char, int, float, and double. Strings are arrays of characters (we’ll cover arrays later). Declare a variable before you use it: int x; /* declares an integer called x. Its value is not assigned. */ float y, z = 3. 14159; /* declares two floating point numbers. z is set equal to pi */ z = 4; /* now z is equal to 4 */ my. Val = 2; /* This would be an error, because my. Val was not yet declared */

Logical Operators n n C defines these logical operators: <, >, <=, >= and == (the equivalence operator) You can compare any variable. Characters are compared based on their ASCII values. All answers will be true (not zero) or false (0) You can extend the logic with && (and), ~ (not) and || (or).

The If Statement n n n Syntax: if (expression) statement; If the expression is true (not zero), the statement is executed. If the expression is false, it is not executed. You can group multiple expressions together with braces: if (expression) { statement 1; statement 2; statement 3; }

The If/Else Statement n n Syntax: if (expression) statement_1; else statement_2; If the expression is true, statement_1 will be executed, otherwise, statement_2 will be. if (my. Val < 3) printf(“my. Val is less than 3. n”); else printf(“my. Val is greater than or equal to 3. n”);

The For Loop n n Syntax: for (initialization; test; increment) {statements; } The for loop will first perform the initialization. Then, as long is test is TRUE, it will execute statements. After each execution, it will increment. for (cntr = 0; cntr < 3; cntr = cntr + 1) { printf(“ Counter = %dn”, cntr); } Counter = 0; Counter = 1; Counter = 2;

Functions n n n Any non-trivial program will have multiple functions C functions look like methods in Java Functions have return types n n int, float, void, etc. Functions have unique names Functions have parameters passed into them Before a function can be used, it must be declared and/or defined n n a function declaration alone is called a prototypes can be in a separate header file or included in the file their definition appears in

Function Example #include <stdio. h> #define PI 3. 14 float calc. Area(float); // prototype for function to be defined later int main() { float radius, area; printf(“Enter radius of a circle: “); scanf(“%f”, &radius); area = calc. Area(radius); // call function printf(“Area of circle with radius %f is: %fn”, radius, area); return 0; } float calc. Area(float radius) { return PI * radius; }

Arrays n Like Java, C has arrays n n n they are declared slightly different indexes still go from 0 to size-1 C arrays have some major differences from Java n n if you try to access an index outside of the array, C will probably let you C arrays are kept on the stack n n this limits the maximum size of an array size of a C array must be statically declared n no using variables for the size
![Declaring Arrays n Legal array declarations int scores20 define MAXLINE 80 char lineMAXLINE Declaring Arrays n Legal array declarations int scores[20]; #define MAX_LINE 80 char line[MAX_LINE]; //](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-13.jpg)
Declaring Arrays n Legal array declarations int scores[20]; #define MAX_LINE 80 char line[MAX_LINE]; // place 80 inside [ ] at compile time n Illegal array declaration int x = 10; float nums[x]; // using variable for array size
![Initializing Arrays n Legal initializations int scores5 2 3 10 0 4 Initializing Arrays n Legal initializations int scores[5] = { 2, -3, 10, 0, 4](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-14.jpg)
Initializing Arrays n Legal initializations int scores[5] = { 2, -3, 10, 0, 4 }; char name[20] = { “Jane Doe” }; int totals[5]; int i; for(i=0; i<5; i++) totals[i] = 0; char line[MAX_LINE]; scanf(“%s”, line); n Illegal initialization int scores[5]; scores = { 2, -3, 10, 0, 4 };

More on Arrays n Accessing arrays n no . length parameter in array n remember, no bounds checking n Using arrays in functions n n arrays can be passed as parameters to functions arrays are always passed-by-reference n the address of the first element is passed n any changes made to array in the called function are seen in the calling function n this is the difference from pass-by-value
![Array Example include stdio h define NUMSTUDENTS 70 void set Numsint nums int size Array Example #include <stdio. h> #define NUM_STUDENTS 70 void set. Nums(int nums[], int size)](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-16.jpg)
Array Example #include <stdio. h> #define NUM_STUDENTS 70 void set. Nums(int nums[], int size) { int i; for(i=0; i<size; i++) { printf(“Enter grade for student %d: “, i); scanf(“%d”, &nums[i]); } } int main() { int grades[NUM_STUDENTS]; set. Nums(grades, NUM_STUDENTS); return 0; }

Strings n n In C, strings are just an array of characters Because strings are so common, C provides a standard library for dealing with them n to use this library, include the following: n n n #include <string. h> This library provides means of copying strings, counting characters in string, concatenate strings, compare strings, etc. By convention, all strings are terminated by the null character ( ) n regardless of the size of the character array holding the string

Common String Mistakes n C does not allow standard operators to be used on strings n str 1 < str 2 does not compare the two strings n it n does compare the starting address of each string str 1 == str 2 does not return true if the two strings are equal n it only returns true if the starting address of each string is the same n str 3 = str 1 + str 2 does not combine the two strings and store them in the third n it adds the starting addresses of each string
![Common String Functions n int strlenchar str n n int strcpychar str To char Common String Functions n int strlen(char str[]); n n int strcpy(char str. To[], char](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-19.jpg)
Common String Functions n int strlen(char str[]); n n int strcpy(char str. To[], char str. From[]); n n n copies the string in str. From to the string in str. To make sure str. To is at least as big as str. From int strcat(char str. To[], char str. From); n n n counts the number of characters up to (but not counting) the null character and returns this number copies the string in str. From to the end of str. To again, make sure str. To is large enough to hold additional chars int strcmp(char str 1[], char str 2[]); n n compares string 1 to string 2 return values are as follows n n n less than 0 if str 1 is lexicographically less than str 2 0 if str 1 is identical to str 2 greater than 0 if str 1 is lexicographically greater than str 2

Structures n n C does not have classes However, C programmers can create their own data types n n called structures Structures allow a programmer to place a group of related variables into one place

Creating a Structure n n Use the keyword struct to create a structure Example of creating a structure struct foo { char student[30]; int grades[7]; float ending. Grade; }; n n Variables can now be created of the type struct foo Example of creating a structure variable int main() { struct foo my. Struct; … n Notice that the struct keyword is part of the new data type name

Using Structures n To access any of the member variables inside the structure: n n use the structure variable name, a period, and the member variable name When passed to a function, a structure is passed by value n just like any other data type

Example Using Structures int main() { struct foo my. Struct; strcpy(my. Struct. student, “John Doe”); for(i=0; i<7; i++) my. Struct. grades[i] = 0; my. Struct. end. Grade = 0; }

Pointers n n n 24 Powerful, but difficult to master Simulate call-by-reference Close relationship with arrays and strings

Pointer Variable Definitions and Initialization n Pointer variables n n 25 Contain memory addresses as their values Normal variables contain a specific value (direct reference) Pointers contain address of a variable that has a specific value (indirect reference) Indirection – referencing a pointer value

Simple Pointers n n Pointer is a value that points to a location in the memory Pointer is associated with a type n n n 26 int number ; int * ptr_to_num ; 23 number = 23; ptr_to_num = & number; printf("Value is %d n", (*ptr_to_num) ); 003 F 45 A 8 ptr_to_num

More Pointers n n int number ; int * p 1, * p 2; number n p 1 = & number ; number = 23; p 2 = & number ; printf(" *p 1 = %d *p 2 = %d ", *p 1, *p 2); n /* Output ? ? */ n n n 27 p 2
![Pointers and Arrays n char str32 char ptr n ptr str n Pointers and Arrays n char str[32]; char *ptr; n ptr = str ; n](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-28.jpg)
Pointers and Arrays n char str[32]; char *ptr; n ptr = str ; n strcpy( str, "test" ); strcpy( ptr, "test" ); n n 28 /* does the same as above */
![Pointers and Arrays n int table 8 int ptr n ptr table Pointers and Arrays n int table [8]; int *ptr ; n ptr = table](https://slidetodoc.com/presentation_image/cdad7fd64783c6bb59739f97f6546360/image-29.jpg)
Pointers and Arrays n int table [8]; int *ptr ; n ptr = table ; n table [ 4 ] = 94; *( ptr + 4 ) = 94; n n n How about 29 94 table ptr ( ptr + 4 )

Pointer operations n n n n Can add and subtract numbers (like array indices) Can increment and decrement! char str[] = "Test"; char * p ; int i; for( p = str, i=0; *p != '