由于某些原因,我的回文功能不起作用,我会喜欢它的一些帮助:
码
int Pal(char *s, int a, int b)
{
if (a>= b)
return 1;
if (s[a] != s[b])
return 0;
return Pal(s, ++a , --b);
}
int main()
{
char *s = "civic";
if (Pal(s , 1, strlen(s)))
printf("YES\n");
else
printf("No\n");
}
Run Code Online (Sandbox Code Playgroud)
它继续打印否,我对为什么会发生这种情况一无所知.
// Assuming these initializations
int x;
float y;
Run Code Online (Sandbox Code Playgroud)
这有什么区别:
x = y = 7.5;
Run Code Online (Sandbox Code Playgroud)
和这个:
y = x = 7.5;
Run Code Online (Sandbox Code Playgroud)
为什么第一个将y值打印为7.5,第二个将值打印y为7.00?
首先,如果这是一个天真的问题,请原谅我; 我只是一个初学者,正在努力学习.
我知道:
char* a = "CD";
Run Code Online (Sandbox Code Playgroud)
将字符串存储在只读存储器中 ; 所以对字符串的任何更改都是不可能的.(不变)
但我确实知道使用malloc的情况也是如此;
char* a = malloc(3*sizeof(char)) ;
a = "CD" ;
a[0] = 'S' ; // even regular a = "MR"; does not work
Run Code Online (Sandbox Code Playgroud)
我很困惑,我以为这是存储在堆中的 ......
为什么我不能修改字符串?