יש כמה דרכים בעקרון שכל אחת מהן מניבה תוצאה אחרת בזכרון אבל בשבילך זה כנראה לא ישנה. כל סטרינג שאתה כותב hard-coded הוא למעשה מצביע למקום בData Section שלך שמכיל את המידע הזה, אז כמו שאתה כותב
char blah[] = "blah"
אתה יכול לכתוב
char * blah[] = {"blah", "blahblah"}
והתוצאה היא מערך של מצביעים לchar - סטרינגים. והדרכים השונות שהזכרתי: char ** blah - מצביע לאזור זכרון שמכיל מצביע לchar (סטרינג), באותה מידה יכולים להיות כמה מצביעים רציפים שם ואז קיבלת מערך של מצביעים, char blah - מערך של מערכי char - שזה למעשה מערך של מצביעים לchar, או מצביע למצביע וכו' כו', לא באמת רלוונטי לך, אם תרצה לדעת עוד אני ארחיב