char* fun()
{
static char str[]="Hello";
return str;
}
str содержит базовый адрес вашей строки.(Предположим, 1000).Теперь, когда вы возвращаете str , он возвращает только базовый адрес.
printf("%s",fun());
Здесь вы хотите напечатать строку, чтобы вы дали% s, но этот забавный возвращаемый базовый адрес вашего массива символов(строка), но не строка (как вы предполагаете).
Во-первых, вам нужно разыменовать ваш fun () в printf так, чтобы он давал первый символ массива строк, так как str давал базовый адрес, который указывает на первыйсимвол вашей строки.
Кроме того, вам нужно указать форматер как % c , чтобы он выдал H .
Теперь для печативсю строку, вам нужно увеличивать то, что находится внутри вашего указателя на символ.
См. ниже код:
#include <stdio.h>
char* fun();
int main()
{
int i;
for(i=0;i<6;i++){
printf("%c",*(fun()+i));
}
return 0;
}
char* fun()
{
static char str[]="Hello";
return str;
}
Здесь вы можете видеть, что я разыскиваю fun () сначала для печати первого символа, а затемЯ сделал цикл for, чтобы можно было использовать переменную цикла i, чтобы увеличить то, что находится внутри указателя, возвращаемого функцией fun ().
Попробуйте и дайте мне знать, если у вас возникнут какие-либо проблемы здесь.