void reverse_string(char* str) 为什么不用传递数组的长度?
在C语言中,字符串通常是以空字符'\0'
结尾的字符数组。因此,当你传递一个字符串(即字符数组的指针)给函数时,函数可以通过遍历字符串直到遇到空字符来确定字符串的长度。这就是为什么reverse_string
函数不需要显式传递数组长度的原因。
在reverse_string
函数内部,使用strlen
函数可以计算字符串的长度,这是因为strlen
函数会遍历字符串直到遇到空字符,并返回遍历过的字符数量(不包括空字符)。
所以,即使不传递数组的长度,reverse_string
函数也能通过遍历字符串来确定其长度,并进行反转操作。
cpp
#include<stdio.h>
int DigitSum(int n);
int main()
{
int num = 0;
scanf("%d", &num);
printf("%d\n", DigitSum(num));
return 0;
}
int DigitSum(int n)
{
int a = n % 10;
int temp = n / 10;
if (n != 0)
{
return a + DigitSum(temp);
}
}
cpp
#include<stdio.h>
int power(int n, int k);
int main()
{
int n = 0;
int k = 0;
scanf("%d %d", &n, &k);
printf("%d\n", power(n, k));
return 0;
}
int power(int n, int k)
{
if (k != 0)
{
return n * power(n, k-1);
}
}