Difference between revisions of "Advance-C/C2/Storage-class-specifiers/English-timed"
From Script | Spoken-Tutorial
Sandhya.np14 (Talk | contribs) |
Sandhya.np14 (Talk | contribs) |
||
| Line 12: | Line 12: | ||
| In this tutorial, We will learn about: | | In this tutorial, We will learn about: | ||
* '''Storage class specifiers''' | * '''Storage class specifiers''' | ||
| − | * '''auto | + | * '''auto''' keyword |
| − | * '''static | + | * '''static''' keyword |
| − | * '''extern | + | * '''extern''' keyword |
| − | * '''register | + | * '''register''' keyword, with the help of examples. |
|- | |- | ||
| Line 153: | Line 153: | ||
|- | |- | ||
| 03:02 | | 03:02 | ||
| − | | I will cut this declaration and | + | | I will cut this declaration and initialization from here and paste it over here. |
| − | + | Click on '''Save'''. | |
| − | Click on '''Save''' | + | |
|- | |- | ||
| 03:14 | | 03:14 | ||
| − | | Let us execute on the '''terminal'''. Press the | + | | Let us execute on the '''terminal'''. Press the up-arrow key twice. |
| − | Press '''Enter''' | + | Press '''Enter'''. |
|- | |- | ||
| 03:22 | | 03:22 | ||
| − | | We get an error: '''file-scope declaration of i specifies auto ''' | + | | We get an error: '''"file-scope declaration of 'i' specifies 'auto'" '''. |
|- | |- | ||
| 03:29 | | 03:29 | ||
| − | | This is because an '''auto | + | | This is because an '''auto''' variable is '''local''' to the '''function'''. |
|- | |- | ||
| Line 188: | Line 187: | ||
|- | |- | ||
| 03:52 | | 03:52 | ||
| − | | Press the up arrow key. Recall the previous command. | + | | Press the up-arrow key. Recall the previous command. |
|- | |- | ||
| 03:57 | | 03:57 | ||
| − | | Press '''Enter'''. Type: '''dot slash auto''' Press '''Enter'''. | + | | Press '''Enter'''. Type: '''dot slash auto'''. Press '''Enter'''. |
|- | |- | ||
| 04:03 | | 04:03 | ||
| − | | Yes it is working! The output is zero. | + | | Yes, it is working! The output is zero. |
|- | |- | ||
| 04:07 | | 04:07 | ||
| − | | This is because we have | + | | This is because we have initialized the value of 'i' as zero. |
|- | |- | ||
| 04:13 | | 04:13 | ||
| − | | Now let us see '''static | + | | Now, let us see '''static''' variable. |
|- | |- | ||
| 04:16 | | 04:16 | ||
| − | | Although we have studied about '''static variable '''in the previous tutorials | + | | Although we have studied about '''static variable '''in the previous tutorials, I will explain it here briefly. |
|- | |- | ||
| 04:24 | | 04:24 | ||
| − | | ''''static'''' variables are | + | | ''''static'''' variables are initialized to zero. |
|- | |- | ||
| Line 220: | Line 219: | ||
|- | |- | ||
| 04:35 | | 04:35 | ||
| − | | Value of the | + | | Value of the variable persists between different '''function call'''s. |
|- | |- | ||
| Line 236: | Line 235: | ||
|- | |- | ||
| 04:54 | | 04:54 | ||
| − | | Press '''Ctrl + | + | | Press '''Ctrl + Shift + S''' keys simultaneously. |
|- | |- | ||
| 05:01 | | 05:01 | ||
| − | | Now I will just change the filename as '''static'''. Click on''' Save.''' | + | | Now, I will just change the filename as '''static'''. Click on''' Save.''' |
|- | |- | ||
|05:10 | |05:10 | ||
| − | | Now, I will change the | + | | Now, I will change the initialization of the variable 'i' to '''static int i equal to zero''' |
Click on''' Save'''. | Click on''' Save'''. | ||
| Line 253: | Line 252: | ||
|- | |- | ||
| 05:30 | | 05:30 | ||
| − | | Type: '''gcc space static.c space hyphen o space stat'''. Press '''Enter''' | + | | Type: '''gcc space static.c space hyphen o space stat'''. Press '''Enter'''. |
|- | |- | ||
| 05:41 | | 05:41 | ||
| − | | Type | + | | Type: '''dot slash stat'''. Press '''Enter'''. |
|- | |- | ||
| 05:46 | | 05:46 | ||
| − | | The output is displayed as: 0, 1, 2, 3 | + | | The output is displayed as: "0, 1, 2, 3" |
|- | |- | ||
| 05:51 | | 05:51 | ||
| − | | This is because '''static | + | | This is because, '''static''' variables are '''global''' variables. |
|- | |- | ||
| 05:56 | | 05:56 | ||
| − | | The scope of '''static | + | | The scope of '''static''' variable is '''local''' to the '''function''', they are defined in. |
|- | |- | ||
| Line 277: | Line 276: | ||
|- | |- | ||
| 06:08 | | 06:08 | ||
| − | | Now let us learn about '''extern | + | | Now, let us learn about '''extern''' keyword. |
|- | |- | ||
| 06:12 | | 06:12 | ||
| − | |Scope of '''extern | + | |Scope of '''extern''' variable is throughout the main program. |
|- | |- | ||
| 06:17 | | 06:17 | ||
| − | |Definition for '''extern | + | |Definition for '''extern''' variable might be anywhere in the 'C' program. |
|- | |- | ||
| 06:23 | | 06:23 | ||
| − | | '''extern | + | | '''extern''' variables are initialized to zero, by default. |
|- | |- | ||
| Line 309: | Line 308: | ||
|- | |- | ||
| 06:42 | | 06:42 | ||
| − | |Note that our filename is '''extern.c''' | + | |Note that our filename is '''"extern.c"'''. |
|- | |- | ||
| 06:47 | | 06:47 | ||
| − | | I have initialized a | + | | I have initialized a variable as '''integer variable 'x'''' to '''10'''. |
|- | |- | ||
|06:54 | |06:54 | ||
| − | | This the '''main | + | | This is the '''main()''' function. In the '''main()''' function, I have declared an '''extern integer variable y.''' |
|- | |- | ||
|07:03 | |07:03 | ||
| − | | Using the '''printf''' statements we will display the values of '''x''' and '''y.''' | + | | Using the '''printf''' statements, we will display the values of '''x''' and '''y.''' |
This is the '''return''' statement. | This is the '''return''' statement. | ||
|- | |- | ||
| 07:12 | | 07:12 | ||
| − | | We will ' | + | | We will initialize 'y' to '''50 '''after the '''main()''' function close. |
|- | |- | ||
| 07:18 | | 07:18 | ||
| − | | Now switch to the '''terminal''' and let us see what will be the output. | + | | Now, switch to the '''terminal''' and let us see what will be the output. |
|- | |- | ||
| 07:24 | | 07:24 | ||
| − | | Type: '''gcc space extern.c space hyphen o space ext'''. Press''' Enter''' | + | | Type: '''gcc space extern.c space hyphen o space ext'''. Press''' Enter'''. |
|- | |- | ||
| 07:35 | | 07:35 | ||
| − | | ''' | + | | Type: '''dot slash ext'''. Press''' Enter'''. |
|- | |- | ||
| 07:40 | | 07:40 | ||
| The output is displayed as: | | The output is displayed as: | ||
| − | |||
'''The value of x is 10 ''' | '''The value of x is 10 ''' | ||
| − | |||
'''The value of y is 50''' | '''The value of y is 50''' | ||
|- | |- | ||
| 07:48 | | 07:48 | ||
| − | | As we studied, the value of the '''extern | + | | As we studied, the value of the '''extern''' keyword is through out the main program. |
|- | |- | ||
| Line 362: | Line 359: | ||
|- | |- | ||
| 08:02 | | 08:02 | ||
| − | | Now let us move on to '''register | + | | Now, let us move on to '''register''' keyword. |
|- | |- | ||
| 08:06 | | 08:06 | ||
| − | | ''' | + | | '''register''' variables will be accessed faster than normal variables. |
|- | |- | ||
| Line 374: | Line 371: | ||
|- | |- | ||
| 08:19 | | 08:19 | ||
| − | |Limited number of variables can be used since register size is very low. | + | |Limited number of variables can be used since '''register size''' is very low. |
|- | |- | ||
| Line 398: | Line 395: | ||
|- | |- | ||
|08:53 | |08:53 | ||
| − | | This is the '''for loop''' that displays the value of | + | | This is the ''''for' loop''' that displays the value of 'i' from '''1''' to '''5.''' |
|- | |- | ||
| 08:59 | | 08:59 | ||
| − | |This will display the value of '' | + | |This will display the value of 'i'. |
|- | |- | ||
| Line 418: | Line 415: | ||
|- | |- | ||
| 09:25 | | 09:25 | ||
| − | | You can see the output is displayed as: '''Values stored in register memory 1 2 3 4 5''' | + | | You can see the output is displayed as: '''"Values stored in register memory 1 2 3 4 5"'''. |
|- | |- | ||
| Line 427: | Line 424: | ||
| 09:39 | | 09:39 | ||
| In this tutorial, we learnt- | | In this tutorial, we learnt- | ||
| − | |||
* '''Storage class specifiers''' | * '''Storage class specifiers''' | ||
| − | * '''auto | + | * '''auto''' keyword |
| − | * '''static | + | * '''static''' keyword |
| − | * '''extern | + | * '''extern''' keyword |
| − | * '''register | + | * '''register''' keyword |
|- | |- | ||
| 09:52 | | 09:52 | ||
| − | | As an assignment, | + | | As an assignment, write a program to print the sum of first 5 numbers. |
|- | |- | ||
| 09:59 | | 09:59 | ||
| − | |Declare both the ''' | + | |Declare both the keywords '''auto''' and '''static''' in the program. |
|- | |- | ||
| 10:04 | | 10:04 | ||
| − | | Watch the video available at the link shown below | + | | Watch the video available at the link shown below. |
|- | |- | ||
| 10:07 | | 10:07 | ||
| − | |It | + | |It summarizes the Spoken Tutorial project. |
|- | |- | ||
| 10:11 | | 10:11 | ||
| − | |If you do not have good bandwidth, you can download and watch it | + | |If you do not have good bandwidth, you can download and watch it. |
|- | |- | ||
| 10:16 | | 10:16 | ||
| − | | The Spoken Tutorial | + | | The Spoken Tutorial project team: * Conducts workshops using spoken tutorials. |
|- | |- | ||
| 10:22 | | 10:22 | ||
| − | |Gives certificates to those who pass an online test | + | |* Gives certificates to those who pass an online test. |
| − | + | ||
For more details, please write to contact@spoken-tutorial.org | For more details, please write to contact@spoken-tutorial.org | ||
|- | |- | ||
| 10:33 | | 10:33 | ||
| − | | Spoken Tutorial | + | | '''Spoken Tutorial''' project is a part of the '''Talk to a Teacher''' project. |
|- | |- | ||
| 10:38 | | 10:38 | ||
| − | |It is supported by the National Mission on Education through ICT, MHRD, Government of India | + | |It is supported by the National Mission on Education through ICT, MHRD, Government of India. |
|- | |- | ||
| 10:45 | | 10:45 | ||
| − | |More information on this | + | |More information on this mission is available at: |
| + | http://spoken-tutorial.org\NMEICT-Intro. | ||
|- | |- | ||
Revision as of 14:58, 3 December 2015
| |
|
|---|---|
| 00:01 | Welcome to the Spoken Tutorial on Storage class specifiers. |
| 00:07 | In this tutorial, We will learn about:
|
| 00:22 | For this tutorial, I am using:
|
| 00:34 | To follow this tutorial, you should be familiar with 'C' tutorials. |
| 00:41 | If not, for relevant tutorials, please visit our website which is as shown. |
| 00:47 | I will start with an introduction to storage class specifiers. |
| 00:52 | Specifiers tell the compiler- * where to store a variable |
| 00:57 | * How to store the variable |
| 00:59 | * What is the initial value of the variable |
| 01:03 | * Life time of the variable. |
| 01:06 | The Syntax is: storage_specifier data_type variable _name |
| 01:13 | Types of storage class specifiers are:
|
| 01:21 | Let us start with auto keyword. |
| 01:24 | auto keyword declares an automatic variable. |
| 01:28 | It has a local scope. |
| 01:30 | Keywords are not initialized automatically. |
| 01:34 | You should explicitly initialize keywords while declaring. |
| 01:39 | Storage space of keywords is CPU memory. |
| 01:43 | Let us see an example. I have a code file; let us go through it. |
| 01:49 | Note that our filename is auto.c. |
| 01:54 | We have declared a function as “increment()”. |
| 01:58 | This is the main() function. |
| 02:00 | In the main() function, increment() function is called 4 times. |
| 02:06 | Then we have the return 0 statement. |
| 02:10 | Let us see the function definition. |
| 02:14 | Here, we have declared variable 'i' as auto int. It has a local scope. |
| 02:21 | Then we display value of 'i' using printf. |
| 02:26 | Value of i is incremented here. |
| 02:30 | Let us open the terminal by pressing Ctrl+Alt+T keys simultaneously on your keyboard. |
| 02:38 | Type: gcc space auto.c space hyphen o space auto. Press Enter. |
| 02:48 | Type: dot slash auto |
| 02:51 | The output is zero. |
| 02:54 | Now come back to our program. |
| 02:57 | Let us initialize the auto variable i above the main() function. |
| 03:02 | I will cut this declaration and initialization from here and paste it over here.
Click on Save. |
| 03:14 | Let us execute on the terminal. Press the up-arrow key twice.
Press Enter. |
| 03:22 | We get an error: "file-scope declaration of 'i' specifies 'auto'" . |
| 03:29 | This is because an auto variable is local to the function. |
| 03:34 | We cannot initialize it globally. |
| 03:37 | Let us fix the error. Come back to our program. |
| 03:42 | Delete this; paste it over here. |
| 03:47 | Click on Save and execute on the terminal. |
| 03:52 | Press the up-arrow key. Recall the previous command. |
| 03:57 | Press Enter. Type: dot slash auto. Press Enter. |
| 04:03 | Yes, it is working! The output is zero. |
| 04:07 | This is because we have initialized the value of 'i' as zero. |
| 04:13 | Now, let us see static variable. |
| 04:16 | Although we have studied about static variable in the previous tutorials, I will explain it here briefly. |
| 04:24 | 'static' variables are initialized to zero. |
| 04:28 | They are not destroyed even after program control exits from the block. |
| 04:35 | Value of the variable persists between different function calls. |
| 04:41 | Storage space is CPU memory. |
| 04:45 | Let us see an example. I will edit the same code file. |
| 04:51 | Come back to our program. |
| 04:54 | Press Ctrl + Shift + S keys simultaneously. |
| 05:01 | Now, I will just change the filename as static. Click on Save. |
| 05:10 | Now, I will change the initialization of the variable 'i' to static int i equal to zero
Click on Save. |
| 05:23 | Let us see what happens. Execute the file on the terminal. |
| 05:30 | Type: gcc space static.c space hyphen o space stat. Press Enter. |
| 05:41 | Type: dot slash stat. Press Enter. |
| 05:46 | The output is displayed as: "0, 1, 2, 3" |
| 05:51 | This is because, static variables are global variables. |
| 05:56 | The scope of static variable is local to the function, they are defined in. |
| 06:03 | They do not lose their value between function calls. |
| 06:08 | Now, let us learn about extern keyword. |
| 06:12 | Scope of extern variable is throughout the main program. |
| 06:17 | Definition for extern variable might be anywhere in the 'C' program. |
| 06:23 | extern variables are initialized to zero, by default. |
| 06:28 | They can be accessed by all functions in the program. |
| 06:33 | These are stored in CPU memory. |
| 06:36 | Let us see an example. |
| 06:38 | I have a code file; let us go through it. |
| 06:42 | Note that our filename is "extern.c". |
| 06:47 | I have initialized a variable as integer variable 'x' to 10. |
| 06:54 | This is the main() function. In the main() function, I have declared an extern integer variable y. |
| 07:03 | Using the printf statements, we will display the values of x and y.
This is the return statement. |
| 07:12 | We will initialize 'y' to 50 after the main() function close. |
| 07:18 | Now, switch to the terminal and let us see what will be the output. |
| 07:24 | Type: gcc space extern.c space hyphen o space ext. Press Enter. |
| 07:35 | Type: dot slash ext. Press Enter. |
| 07:40 | The output is displayed as:
The value of x is 10 The value of y is 50 |
| 07:48 | As we studied, the value of the extern keyword is through out the main program. |
| 07:55 | We can define it anywhere in the program. |
| 07:59 | Both the statements are justified. |
| 08:02 | Now, let us move on to register keyword. |
| 08:06 | register variables will be accessed faster than normal variables. |
| 08:13 | They are stored in register memory rather than main memory. |
| 08:19 | Limited number of variables can be used since register size is very low. |
| 08:25 | 16 bits, 32 bits or 64 bits. |
| 08:30 | Let us see an example now. I have a code file. Let us go through it. |
| 08:37 | Note that the file name is register.c |
| 08:42 | Here we have declared register integer variable. |
| 08:47 | This variable will be directly stored in the register memory. |
| 08:53 | This is the 'for' loop that displays the value of 'i' from 1 to 5. |
| 08:59 | This will display the value of 'i'. |
| 09:03 | Let us execute the program and see. |
| 09:07 | On the terminal, type: gcc space register.c space hyphen o space register |
| 09:17 | Press Enter. Type: dot slash register. Press Enter. |
| 09:25 | You can see the output is displayed as: "Values stored in register memory 1 2 3 4 5". |
| 09:34 | This brings us to the end of this tutorial. Let us summarize. |
| 09:39 | In this tutorial, we learnt-
|
| 09:52 | As an assignment, write a program to print the sum of first 5 numbers. |
| 09:59 | Declare both the keywords auto and static in the program. |
| 10:04 | Watch the video available at the link shown below. |
| 10:07 | It summarizes the Spoken Tutorial project. |
| 10:11 | If you do not have good bandwidth, you can download and watch it. |
| 10:16 | The Spoken Tutorial project team: * Conducts workshops using spoken tutorials. |
| 10:22 | * Gives certificates to those who pass an online test.
For more details, please write to contact@spoken-tutorial.org |
| 10:33 | Spoken Tutorial project is a part of the Talk to a Teacher project. |
| 10:38 | It is supported by the National Mission on Education through ICT, MHRD, Government of India. |
| 10:45 | More information on this mission is available at: |
| 10:52 | This is Ashwini Patil from IIT Bombay. Thank you for joining. |