SF001 – C Training – Advanced C Programming Course
Advanced C programming course skims through the basics of C and soon jumps over to core of C programming language which looks simple but difficult to master. Our C Training will make the participant learn deep C secrets and develop a fairly advanced level of C programming expertise which is essential to write complex mission critical systems and application software.
Advanced C Programming course will be delivered by our Founder/Director who is an Expert with 17+ years of experience in Linux Kernel and SAN software development. The C training flow will be an assignment driven model so that participants can develop an expert level C programming skills.
Participants will be writing lots of C programs dealing with operator precedence, conditional constructs, strings, pointers, arrays, arrays & pointers, double pointers, function pointers, pointers to arrays, internal storage for various data-types, creating in memory data-structures, bit-field operators, recursions, function call and stack formation, standard file I/O library, buffered IO, etc.
Lectures, Classroom Discussions and C Programming Lab Exercises
30% Theory, 70% Lab
Location: Sanfoundry Institute, Bangalore, India
Basic knowledge of C with a deep desire to learn C programming in depth.
IT Professionals and/or Students who want to become a serious Developer.
Experienced professionals preparing for Technical C-Round Interviews in Top IT Product MNCs.
Fee, Schedule & Registration Click Here for Advanced C Programming course training schedule, fee and registration information or if you are interested in Class-room training @ Bangalore. Click Here if you are a Foreign National, Overseas Participant or an NRI for Online Training.
Advanced C Training Course Outline
The C Language
C Program Compilation
Tokens of C Program
Identifiers and Keywords
Primitive Data Types
Structures – The Definition
Structures – Declaration & Type
Accessing Elements of Structure
Range of Signed/Unsigned Data-types
Efficient way of Printing Pointer
Compiler Memory Allocation for Data-types
Compiler Memory Allocation for Structures
Compiler Memory Allocation for Unions
Union – Data Corruption
Practical Usage of Unions
Practical Usage of Bitfields
Printing every byte of an Integer
Practical example of Typedef Usage
typedef’ing a Function Pointer
Bit-Fields in Structure Practical examples of Bitfield Usage Structure Padding & Pitfalls Programming Model & Memory Sizes
Why Sizeof Int and Long is 4 or 8?
Use of long long in 32-bit Architecture Practical Example of long long IA-32, IA-64, ILP-32, LP64, x86-64
Array – Representation
Array – Memory Allocation
Array – Declaration & Initialization
Two Dimensional Arrays
Accessing a Variable Through Pointer
Pointer – Memory Allocation
Pointer – Declaration & Initialization
Pointer – Dereferencing
Pointers & Arrays
Character Arrays using Pointers
Array of Character Pointers
Memory Diagram – Array of Char Pointers
Arrays as Pointers – a[i] == i[a]? Constant Pointers
String Handling Functions
String Conversion Functions
Efficient usage of sscanf()/sprintf()
Binary & Octal Systems
Decimal & Hexadecimal Systems Signed Representations in Memory
Binary Shifts – Right & Left
Sign Bits and Bit-Shift Operations
Right Shift – Logical Vs Arithmetic Shift
Endian-ness – Little Vs Big
Endian-ness – Portability Issues Operators
Logical Operators – Short Circuit
Bitwise Vs Logical Operations
Pitfalls/Issues with sizeof() usage
Pointer Increment & Scaling
True meaning of Associativity
Examples of Precedence & Associativity
Ternary Operator Associativity Rule Data-type Conversion Rules
Float to Int to Float Conversions
Variadic functions & default promotion rules
Pointer Format Specifiers
Signed Vs Unsigned – Pitfalls Evaluation of i = ++i + ++i
Evaluation of i = ++i + ++i + ++i Concept of Sequence Points
Example of Sequence Points
Storage Class Specifiers
Scope of a Variable
Register, Auto, Static, Extern
Why Register Class and Practical Examples
Automatic Variables and Stack
Static Variables and Functions
True meaning of Extern
How to Use extern across Multiple Files with Examples
Best Practices for Extern Usage
Nesting of Scope
Lifetime of a Variable
Linkage of a Variable
What is Const? Practical Examples of Const Qualifier
Usage of Constant in library functions (libc)
What is Volatile? Practical Examples of Volatile Qualifier
Const Volatile Together?
Register Vs Volatile Performance? Practical Examples of Const Volatile
What is Restrict Qualifier?
Restrict Keyword and Compiler Optimization Examples of Restrict Qualifier
Functions & Pointers
Passing Arguments to Functions
Call by Value & Reference
Is C call by Value?
Is C call by Reference?
Array as Function Argument
Rules for Array Argument Passing
Multi-dimensional Array Argument Passing
Structure as Function Argument
Static Vs Dynamic Runtime Environment
Function Call and Runtime Stack
Rules for Evaluation of Function Arguments Memory Organization
View of Runtime Stack with Example
Access to Local Variable in Stack
Declaration and Usage of Function Pointers
Function Pointers as Function Parameters
Practical Example of Function Pointers
Pointer to an Integer Array C Pointers Complexity Chart
Preprocessor – #include statements
Multiple Inclusion of a Header File?
Preprocessor – #define statements
Preprocessor – Conditional Compilation
Preprocessor – Nested Macros
Preprocessor – Multiline Macros
Preprocessor – Stringizer
Preprocessor – Token Concatenation
Preprocessor – Useful Directives
Conditional Directives for Debugging
Where Macros are Heavily Used
Practical Examples of Macros
Macros Vs Enums
Macros Vs Inline
Inline Recursive Functions
Command Line Argument
Environment Variables in C Programs
Recursion Vs Iteration
Standard I/O Library
Files & Streams
IO Buffers – Line Vs Full Vs No-Buffers
Setting & Flushing Buffers
File Access Modes
Sequential Vs Random Access
Concept of File Offsets
File Operation Errors
Return Values and Error Values
Character Based File I/O
Line Based File I/O
Formatted File I/O
Block File I/O
Dangerous – gets() Vs fgets()
File Random Access Methods
Sample C Assignments for Discussion/Memory-Diagram/Labs in Advanced C-Class
1. Comment on the output of following code:
printf("value in pointer p is %c\n",*p);
a) It will print a
b) It will print 0
c) Compile time error
d) Run time error View Answer
c) No Output will be printed
d) Run Time Error View Answer
$ cc pgm.c
Fee, Schedule & Registration Click Here for Advanced C Programming course training schedule, fee and registration information
Subscribe Newsletter & Posts
Manish Bhojasia, a technology veteran with 17+ years @ Cisco & Wipro, is Founder and CTO at Sanfoundry. He is Linux Kernel Developer and SAN Architect and is passionate about competency developments in these areas. He lives in Bangalore and delivers focused training sessions to IT professionals in Linux Kernel, Linux Debugging, Linux Device Drivers, Linux Networking, Linux Storage & Cluster Administration, Advanced C Programming, SAN Storage Technologies, SCSI Internals and Storage Protocols such as iSCSI & Fiber Channel. Stay connected with him below.
It was a wonderful course, a thorough study through the bits and pieces of Storage Devices and the other advancements in the SAN technology which was very informative for me. Well prepared slides, practical thoughts and fully interactive class.
The Linux System Programming training presented by Manish was very good. His presentation was very precise, clear and in-depth covering the real-time design problems and solutions.
The depth of C coverage, the common pitfalls, the presentation by Manish and his pace were all remarkable. Gave a clear picture of the inner working of C language design.
The course was well designed and coverage was satisfactorily deep. The linux programming assignments were designed to get a feel of real time issues and covered lot of areas of uncertainty. The project work suggested at the end of the course was invaluable.
Thank you for providing such an awesome experience on Linux Device Driver Programming. The real beauty in this training that I could witness was its practical exposures to design, issues and explanations on the same in a neat way.
I checked a lot of other training centers before deciding to go with Sanfoundry and am glad I did. The training was very interactive and covered the most important industry aspects of SAN technology needed currently. I admire Manish's immense knowledge on the subject and his friendly attitude.
Advanced C Course content quality was awesome. Lab exercise by Manish are really good as well as tough to cover C programming concepts indepth. The quality of teaching is superb.
Best of Best in SAN training from the scratch to more detailed explanation. It was a very informative and good learning experience. I also completed the SNIA certification after going through this course in 1 week.
Manish’s presentation was very nice and cleared all my open doubts. Device Driver Lab exercises are really challenging and we really need to break our heads to design and code.
The Linux Kernel Programming Course structure is very good. The trainer is very knowledgable and is ever willing to clear the doubts. The programming exercises are given to understand the topics in more depth.
It was a wonderful experience, and I learnt a lot from Advanced-C course. There was so much more to the C language than I thought initially, and Manish Sir taught it in such a way that we got a deep understanding of the language, and the nuances of debugging. The four days were challenging, but enjoyable. In short, our trainer is brilliant, and so is the course.
Manish has tremendous knowledge regarding SAN. Looking forward to FC Administration Courses also from him. Thanks a lot !!!
The Linux Systems Programming course was very good and topics were discussed in depth. Also this is a very rare course and not many institutes in India conduct such courses at such depths. The presentation were clear and good and the lab exercises were designed in such a way that the concepts could be understood practically.
The methodic way in which the training was conducted made it very comprehensible. Manish's knowledge and experience in kernel programming is an excellent "hand-hold" for starting to understand kernel internals.
Sanfoundry is No. 1 choice for Deep Hands-ON Trainings in SAN, Linux & C, Kernel & Device Driver Programming. Our Founder has trained employees of almost all Top Companies in India. Here are few of them: VMware, Citrix, Oracle, Motorola, Ericsson, Aricent, HP, Intuit, Microsoft, Cisco, SAP Labs, Siemens, Symantec, Redhat, Chelsio, Cavium Networks, ST Microelectronics, Samsung, LG-Soft, Wipro, TCS, HCL, IBM, Accenture, HSBC, Northwest Bank, Mphasis, Tata Elxsi, Tata Communications, Mindtree, Cognizant, mid size IT companies and many Startups. Students from top Universities and colleges such as NIT Trichy, BITS Pilani, University of California, Irvine, University of Texas, Austin & PESIT Bangalore have benefited a lot from these courses as well. The assignments and real time projects for our courses are of extremely high quality with excellent learning curve.
Register for Expert Level Training Classes by our Founder & CTO. Alternatively, call us for your Corporate Training or College Training needs.