标题:为什么在C++运行出来,将&去掉在C中却运行不出来
只看楼主
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
程序代码:
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
char *p="你好,中国!";
for(size_t i=0;i<strlen(p);i++)
if(p[i]<0)
{
printf("%c%c",p[i],p[i+1]);//不要用p[++i],因为printf是先计算右边表达式的值的,按照你原来的代码,假设是第一次循环,那是会输出2个同样的p[1]的,而不是p[0]和p[1]
i++;
}
return 0;
}

2020-03-24 20:55
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
回复 9楼 牵绊绊
pop(L)了栈顶要移动

2020-03-24 20:56
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:10 
c++支持函数参数用“引用”的方式传递,c不支持。
函数参数一般有传值和传址两种方式,“引用”才是真正的传址,那种用指针的参数其实也是传值,只是传的是指针值。引用相当于函数调用者和被调用者之间的隔离墙打了个洞,被调用者可以通过这个洞直接在调用者房间里拿东西。

能编个毛线衣吗?
2020-03-24 20:58
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 10楼 return_0
按理来说应该会出现
2 5 0 4 空栈
但是不知为什么也不出
2020-03-24 20:59
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 13楼 wmf2014
如果是C的话,一定要定义指针传值吗?
是主函数与其他函数之间,还是任意调用函数都要定义指针?
2020-03-24 21:02
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
printf不支持中文。。。

2020-03-24 21:03
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
如果你的变量非全局,那么你不用定义指针

2020-03-24 21:03
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:0 
回复 15楼 牵绊绊
是的。只能通过操作指针改变调用者的局域变量值,用*号提取指针指向的值,如果在c++中参数带&符号,则就和操作普通变量一样改变调用函数中变量值。

能编个毛线衣吗?
2020-03-24 21:06
牵绊绊
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2020-3-22
得分:0 
回复 18楼 wmf2014
是主函数用*定义,还是调用的函数中用指针定义?
那这个代码该怎么调试呢?
2020-03-24 21:10
return_0
Rank: 8Rank: 8
来 自:五维空间
等 级:禁止访问
威 望:3
帖 子:512
专家分:838
注 册:2020-1-28
得分:0 
输出每一步值

2020-03-24 21:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500553-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022776 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved