/* * Author : Amit Dutta * Date : 08 Feb 2026 * Repo : https://github.com/notamitgamer/bsc * License : MIT License (See the LICENSE file for details) */ /* How many bytes in memory would be occupied by the following array of pointers to strings? How many bytes would be required to store the same strings in a two-dimensional character array? */ /* Let Us C, Chap- 16 (Handling Multiple Strings), Qn No.: A(a) */ /* This file is auto-generated by a bot. */ /* This code is not compiled; it is for reference only. */ #include #include #include #include int main() { /* Question Analysis: char *mess[] = {"Hammer and tongs", "Tooth and nail", "Spit and polish", "You and C"}; 1. Array of Pointers (*mess[]): - It stores 4 pointers. - Size of a pointer is typically 4 bytes (32-bit) or 8 bytes (64-bit). - Total = 4 * sizeof(char*) - Plus the strings themselves are stored elsewhere in memory. 2. Two-Dimensional Array (mess[][]): - Must accommodate the longest string ("Hammer and tongs" = 16 chars + null = 17). - Width would be 17 (or more). - Size = 4 rows * 17 cols * 1 byte. */ char *mess_ptr[] = { "Hammer and tongs", "Tooth and nail", "Spit and polish", "You and C" }; // Longest string length + 1 for null terminator // "Hammer and tongs" is 16 chars long. char mess_2d[4][17] = { "Hammer and tongs", "Tooth and nail", "Spit and polish", "You and C" }; printf("--- Memory Occupation Analysis ---\n\n"); printf("1. Array of Pointers (char *mess[]):\n"); printf(" Size of array object itself (4 pointers): %zu bytes\n", sizeof(mess_ptr)); printf(" (Note: The string literals are stored in read-only memory separately)\n\n"); printf("2. Two-Dimensional Array (char mess[4][17]):\n"); printf(" Size of 2D array: %zu bytes\n", sizeof(mess_2d)); printf(" (Calculation: 4 rows * 17 columns * 1 byte)\n"); return 0; }