⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠ You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’
Excalidraw Data
Text Elements
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
Program execution starts here
How the program executes in Computer Memory?
Stack
main()
Stack frame
call stack: top of the stack executes.
Global
Heap
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
Stack
main()
100
120
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
100
100
\0
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: H
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: H
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: H
LOOPING FASTER…
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: HE
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: HEL
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: HELL
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: HELLO
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
H
E
L
O
L
\0
*C
OUTPUT: HELLO
‘\0’ == ‘\0’
Condition failed.
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
print()
C
150
170
154
158
OUTPUT: HELLO
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
C[20] = “Hello”
main()
100
120
OUTPUT: HELLO\n
Stack
include <stdio.h>
void print(char* C) { while (*C != ‘\0’){ printf(“%c”, *C); C++; }
printf("\n");
}
int main() { char c[20] = “Hello”;
print(c);
return 0;
}
OUTPUT: HELLO\n
THE END.