有人能帮解释一下下面的C语言代码吗?主要是指针

2025-06-20 11:53:32
推荐回答(5个)
回答1:

不知道你这个是toupper是不是书写的关系,这里是递归调用么?
1.是递归
那么str++位置不对,str一直没变因此会无限调用下去,应在调用之前进行地址增加,可直接放到调用参数里
*str = toupper(*(str++));
并且是递归的话,函数本身也有问题,定义的是没有返回值的函数却要返回给*str赋值。
2.不是递归
str字符串有问题,没有结束符。

对于补充问题:
str++后str变了,str++之后str指针增加,将字符串中的下一个字符作为了字符串的首地址。

回答2:

ToUpper 对一个字符串str每个元素执行toupper 操作(语句*str=toupper(*str))实现.
while(*str)判断是否已经执行到字符串尾('\0')
str++表示 指针+1 ,亦即指向下个字符.

回答3:

str++ 表示指向下一个~
这个程序有问题~~
首先,大小写敏感, toupper 和ToUpper 是不一样的。
如果忽略大小写问题,这个是递归,没有出口,windows最多可达1000多层深。
你还是学好再问吧~~
回答都不知道怎么说~~

回答4:

指向数组的指针,str++使str指向这个数组里面的下一个位置的值,是指针在数组中顺序移动

回答5:

这是一个死循环

永远执行不到str++这一步