有人能帮解释一下下面的C语言代码吗?主要是指针
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有人能帮解释一下下面的C语言代码吗?主要是指针相关的知识,希望对你有一定的参考价值。
void ToUpper(char *str)
while(*str)
*str = toupper(*str);
str++;
str在程序的过程中为什么没有变化?
ToUpper和toupper 是不一样的,具体函数不用管它
我只想知道*str,
执行str++;之后str变了吗?
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语言的指针传递,指针的指针的问题,谁能帮我分析分析这个问题?