Cách trả về một chuỗi từ một hàm C

Trong một trong những chương trình C của tôi, tôi có nhiệm vụ trả về một chuỗi từ một hàm:

xxxxx 

myName

() {

return

"Flavio"

; }

Điều khó khăn là xác định kiểu giá trị trả về.

Chuỗi trong CChúng tôimảngcủacharcác phần tử, vì vậy chúng tôi thực sự không thể trả về một chuỗi – chúng tôi phải trả về một con trỏ đến phần tử đầu tiên của chuỗi.

Đây là lý do tại sao chúng ta cần sử dụngconst char*:

const

char

*

myName

() {

return

"Flavio"

; }

Đây là một chương trình làm việc ví dụ:

#include

<stdio.h>

const

char

*

myName

() {

return

"Flavio"

; }

() {; }

int main(void) { printf("%s", myName()); }

Nếu bạn muốn gán kết quả cho một biến, bạn có thể gọi hàm như sau:

const

char

*

name

=

myName();

Chúng tôi có thể viếtcon trỏnhà điều hành*cũng theo những cách này:

const

char

*

myName()

const

char

*

myName()

Tất cả các hình thức đều hoàn toàn hợp lệ.

Lưu ý việc sử dụngconst, bởi vì từ hàm, tôi trả về mộtchuỗi chữ, một chuỗi được xác định trong dấu ngoặc kép, là một hằng số.

Lưu ý rằng bạn không thể sửa đổi một chuỗi ký tự trong C.

Một điều khác cần lưu ý là bạn không thể trả về một chuỗi được xác định là biến cục bộ từ một hàm C, bởi vì biến sẽ tự động bị hủy (giải phóng) khi hàm kết thúc thực thi và như vậy, nó sẽ không khả dụng, nếu bạn chẳng hạn, hãy thử làm:

#include

<stdio.h>

const

char

*

myName

() {

char

name[

6

]

=

"Flavio"

;

return

name; }

() {name[name; }

int main(void) { printf("%s", myName()); }

bạn sẽ có một cảnh báo, và một số điều vô nghĩa, như thế này: