החזרת מחרוזת מפונקציית C

Hhzrt Mhrwzt Mpwnqzyyt C



א חוּט הוא רצף של תווים המורכב מתו אחד או מספר תווים ומהווה מבנה נתונים חשוב בתכנות מחשב. כשעובדים עם מחרוזות ב-C, נדרשות לבצע פעולות מסוימות ב- חוּט סוג נתונים כגון אתחול ה- חוּט , הקצאת תוכן, שרשור של מחרוזות , משווה מחרוזות , והחזרת ה חוּט .

מאמר זה מתמקד בפעולה אחת כזו ב- חוּט מבנה הנתונים, אשר מחזיר א חוּט מפונקציה C.







החזרת מחרוזת מפונקציית C

כפי ש חוּט הוא מערך של תווים וכדי להחזיר מחרוזת מפונקציה C, יש להעביר מצביע למבנה הנתונים של המחרוזת כארגומנט מהפונקציה הקוראת לפונקציה הנקראת כפרמטר. לאחר מכן ניתן להשתמש במצביע כדי להצביע על מערך של תווים. ברגע שהמצביע מצביע על מערך של תווים, ה- חוּט ניתן להחזיר ערך מהפונקציה שנקראה באמצעות הצהרת return.



אתה יכול להסתכל על הדוגמה הנתונה להלן להבנה טובה יותר.



#include

const char * השם שלי ( ) {
לַחֲזוֹר 'ג'ון' ;
}

int main ( בָּטֵל ) {
printf ( '%s' , השם שלי ( ) ) ;
}





בקוד שלמעלה, במקום להכריז על המשתנה כמו שאנחנו עושים בדרך כלל, השתמשנו איתו במצביע כך שכאשר אנו מחזירים מחרוזת זו, לא מתרחשת שגיאה.

תְפוּקָה




פונקציית C לא יכולה להחזיר את a חוּט שצוין כמשתנה מקומי מכיוון שהמשתנה יוסר (ישוחרר) מיד כשהפונקציה תסיים לפעול, מה שהופך אותה ללא זמינה ומפעיל אזהרה כמפורט להלן:

#include

const char myName ( ) {
שם char = 'ג'ון' ;
לַחֲזוֹר שֵׁם;
}

int main ( בָּטֵל ) {
printf ( '%s' , השם שלי ( ) ) ;
}

בקוד זה, א אַזהָרָה מופעל כאשר מחרוזת מוחזרת לְלֹא כל מצביע.

תְפוּקָה


אז, אתה יכול לכתוב את הקוד בצורה הבאה:

#include

const char * השם שלי ( ) {
לְהַשְׁחִיר * שם = 'ג'ון' ;
לַחֲזוֹר שֵׁם;
}
int main ( בָּטֵל ) {
printf ( '%s' , השם שלי ( ) ) ;
}

תְפוּקָה


משתנים מוקצים בערימה כברירת מחדל, וזו הסיבה האמיתית להצהרה לעיל. עם זאת, כאשר מצביע מוצהר, הערך שאליו הוא מצביע מוקצה בערימה, שאינה נמחקת לאחר סיום הפונקציה. לאחר הקצאת הזיכרון, עותק של חוּט צריך ליצור ממיקום הזיכרון המקורי שהצביע על ידי המצביע ויש להחזיר את העותק מהפונקציה שנקראה. לאחר מכן, לפונקציה המתקשרת תהיה שליטה על נתוני המחרוזת המקוריים, בעוד שהפונקציה הנקראת אחראית על שחרור השטח המוקצה.

סיכום

פונקציית C יכולה לקחת מצביע אל חוּט כטיעון ולהחזיר את חוּט ערך כתוצאה מהפעולות שבוצעו בתוך הפונקציה הנקראת. הגישה להשיג זאת היא שימוש במצביע של char*. הפונקציה המתקשרת תהיה אחראית על הזיכרון שהוקצה לאחסון חוּט , בעוד שהפונקציה הנקראת אחראית לשחרור השטח המוקצה.