是的,你說得對本地緩衝區mismake,
但是這不是我的想要,
如果我編輯一些不同的,
char buff[16];
char* to_String(void) // Function
{
//char buff[16]; /*this is a local variable*/
sprintf(buff, "%s", "Hello World");
return buff;
}
int main(void) // main function
{
char *Initial_String_1 = to_String();
char *Initial_String_2 = to_String();
char *Initial_String_3 = to_String();
printf("%s", Initial_String_1);
printf("%s", Initial_String_2);
printf("%s", Initial_String_3);
在這種情況下,所有的字符串將是一樣的,因爲他們有相同的緩衝區地址,
我想多一點開的話題。
struct
{
long aaa;
short bbb;
int ccc;
char ddd;
.
.
. // the list goes on
}elements;
typedef struct
{
int lengt;
int *adress;
char name[10];
}_list;
char* to_String(long variable) // Function
{
sprintf(buff, "%ld", variable);
return buff;
}
int main (void)
{
_list My_List[] = {
{ sizeof(elements.aaa), &elements.aaa , to_string(elements.aaa) },
{ sizeof(elements.bbb), &elements.bbb , to_string(elements.bbb) },
{ sizeof(elements.ccc), &elements.ccc , to_string(elements.ddd) },
.
.
. //// the list goes on
};
我不知道,我是否讓自己清楚。 這裏,必須將字符串填充到名稱數組中,而不將其分配給地址。
我可能有語法錯誤。該代碼未經編譯器測試。該想法僅用於說明目的。
我正在試圖找到一種方法的目的。
謝謝。
我可能有語法錯誤 –