指针notaton有什么问题

时间:2019-06-18 04:26:12

标签: c++

我面临的问题是,当我使用指针表示法并运行代码时,它什么也不显示;而当我使用数组表示法时,它却显示期望的结果。我不知道指针表示法出了什么问题。

#include <iostream>
#include <cctype>
#include <cstring>

using namespace std;

int main()
{
    char str[30] = "PROGRAMMING IS FUN";
    char* ptr = str;
/*
    int count=0;

    while(ptr[count] != '\0')
    {
        ptr[count] = tolower(ptr[count]); 
        count++;
    }

    cout<<ptr<<endl; // result is displaying
*/

    while(*ptr != '\0')
    {
        *ptr = tolower(*ptr); 
         ptr++;
    }   

    cout<<ptr<<endl; // nothing is displaying also no compiler error

    // ptr[0] and ptr[1] als0 displays nothing.
}

2 个答案:

答案 0 :(得分:5)

while循环中断时,ptr指向字符串末尾的零字节。 while (*ptr != '\0')就是这样做的。因此,当您尝试输出ptr时,您正在输出一个空字符串。改为输出str

答案 1 :(得分:0)

您必须打印“ str”而不是“ ptr”,因为ptr指向str的结尾。

cout<<str<<endl;

但是,最好执行以下操作:

int len = strlen(str);
for(int i = 0; i<len; i++){
 str[i] = tolower(str[i]);
}