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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有人能帮解释一下下面的C语言代码吗?主要是指针相关的知识,希望对你有一定的参考价值。

void ToUpper(char *str)

while(*str)

*str = toupper(*str);
str++;



str在程序的过程中为什么没有变化?
ToUpper和toupper 是不一样的,具体函数不用管它

我只想知道*str,
执行str++;之后str变了吗?

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

对于补充问题:
str++后str变了,str++之后str指针增加,将字符串中的下一个字符作为了字符串的首地址。
参考技术A ToUpper 对一个字符串str每个元素执行toupper 操作(语句*str=toupper(*str))实现.
while(*str)判断是否已经执行到字符串尾('\0')
str++表示 指针+1 ,亦即指向下个字符.
参考技术B str++ 表示指向下一个~
这个程序有问题~~
首先,大小写敏感, toupper 和ToUpper 是不一样的。
如果忽略大小写问题,这个是递归,没有出口,windows最多可达1000多层深。
你还是学好再问吧~~
回答都不知道怎么说~~本回答被提问者和网友采纳
参考技术C 指向数组的指针,str++使str指向这个数组里面的下一个位置的值,是指针在数组中顺序移动 参考技术D 这是一个死循环

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

以上是关于有人能帮解释一下下面的C语言代码吗?主要是指针的主要内容,如果未能解决你的问题,请参考以下文章

关于C语言指针的问题

C语言的指针传递,指针的指针的问题,谁能帮我分析分析这个问题?

C语言 关于POINTER(指针)的问题, 急!!!!

谁能帮我说下C语言中的堆栈

有人可以解释一下 C 中 signal() 语法的含义吗? [复制]

谁能帮我详细解释下C语言中的实参和形参,谢谢