C++ 理解C/C+中的指针+;
我试图理解指针是如何工作的,但我被困在这条线上了C++ 理解C/C+中的指针+;,c++,c,pointers,C++,C,Pointers,我试图理解指针是如何工作的,但我被困在这条线上了 for (p = s + strlen(s) - 1; s < p; s++, p--) (p=s+strlen(s)-1;s
for (p = s + strlen(s) - 1; s < p; s++, p--)
(p=s+strlen(s)-1;s我不明白p等于什么。 有人能帮我吗
这是完整的代码void Reverse(char *s){
char c, *p;
for (p = s + strlen(s) - 1; s < p; s++, p--){
c = *s;
*s = *p;
*p = c;
}
}
int main(){
char ch[] = "!dlroW olleH";
Reverse(ch);
printf("%s", ch);
return 0;
}
void Reverse(字符*s){
字符c,*p;
对于(p=s+strlen(s)-1;s
在语句中:用于(p=s+strlen(s)-1;s
因此在开始时,p=s+strlen(s)
只分配一次,并转换为p=+
然后,s
增加他的位置,p
减少他的位置
在for
循环位置中,它们只是使用c
之类的临时变量交换字符
单词hello
的示例:
1) hello
2) oellh
3) olleh
在本例中,for循环在s中反向运行,因为其思想是反转保存在s中的数据。P被分配到s的最后一个内存位置,尽管指针算法(代码中的P)正在向后遍历s。为了访问每个内存位置中的数据,指针s和p通过在每个变量(*p)前面放置*来取消引用
这是否更清楚 使用调试器并找出答案。没有C/C++语言。p不相等,它被指定为“指针算术”。这是一个关于这个话题的问题。一旦你理解了这一点,你就会看到
p=s+strlen(s)-1
将p
设置为指向s
字符串中的最后一个(非NUL)字符。@kaylum,好的,我要读一下。我对s+strlens感到困惑。s是什么?地址。函数strlen(s)-1是字符数?我更新了答案。可以理解吗?是的!非常感谢你!当你指的是“指针”时,你也不能说“参考”。这很令人困惑,而且在一个问题上确实是错误的。@PreferenceBean严格地说,你是对的。我有更广泛的背景,我不仅使用了c
,而且我修改了答案以符合术语。
1) hello
2) oellh
3) olleh