Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 指针语法和增量 #包括 #包括 使用名称空间std; 无效反向(字符*str){ char*end=str; char-tmp; 如果(str){ 这些都是相当标准的C编程习惯用法 不,事实上,if(str).等同于if(str!=NULL). C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组{'H','e','l','l','o','\0'}。与指针一样,0或null值在逻辑表达式中被视为false。因此while(*end)…只要结束未达到空字符,则将在循环时执行的主体 不适用 正确-这将前进到字符串中的下一个字符或null终止符 这是反向算法。在第一个循环之后,end指向字符串末尾的一个,而str指向开始。现在我们将这两个指针指向彼此,交换字符_C++_String_Pointers - Fatal编程技术网

C++ 指针语法和增量 #包括 #包括 使用名称空间std; 无效反向(字符*str){ char*end=str; char-tmp; 如果(str){ 这些都是相当标准的C编程习惯用法 不,事实上,if(str).等同于if(str!=NULL). C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组{'H','e','l','l','o','\0'}。与指针一样,0或null值在逻辑表达式中被视为false。因此while(*end)…只要结束未达到空字符,则将在循环时执行的主体 不适用 正确-这将前进到字符串中的下一个字符或null终止符 这是反向算法。在第一个循环之后,end指向字符串末尾的一个,而str指向开始。现在我们将这两个指针指向彼此,交换字符

C++ 指针语法和增量 #包括 #包括 使用名称空间std; 无效反向(字符*str){ char*end=str; char-tmp; 如果(str){ 这些都是相当标准的C编程习惯用法 不,事实上,if(str).等同于if(str!=NULL). C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组{'H','e','l','l','o','\0'}。与指针一样,0或null值在逻辑表达式中被视为false。因此while(*end)…只要结束未达到空字符,则将在循环时执行的主体 不适用 正确-这将前进到字符串中的下一个字符或null终止符 这是反向算法。在第一个循环之后,end指向字符串末尾的一个,而str指向开始。现在我们将这两个指针指向彼此,交换字符,c++,string,pointers,C++,String,Pointers,这些都是相当标准的C编程习惯用法 不,事实上,if(str).等同于if(str!=NULL). C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组{'H','e','l','l','o','\0'}。与指针一样,0或null值在逻辑表达式中被视为false。因此while(*end)…只要结束未达到空字符,则将在循环时执行的主体 不适用 正确-这将前进到字符串中的下一个字符或null终止符 这是反向算法。在第一个循环之后,end指向字符串末尾的一个,而str指向开始。现在我们

这些都是相当标准的C编程习惯用法

  • 不,事实上,
    if(str).
    等同于
    if(str!=NULL).
  • C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组
    {'H','e','l','l','o','\0'}
    。与指针一样,0或null值在逻辑表达式中被视为
    false
    。因此
    while(*end)…只要
    结束
    未达到空字符,则将在
    循环时执行
    的主体
  • 不适用
  • 正确-这将前进到字符串中的下一个字符或null终止符
  • 这是反向算法。在第一个循环之后,
    end
    指向字符串末尾的一个,而
    str
    指向开始。现在我们将这两个指针指向彼此,交换字符

  • 这些都是相当标准的C编程习惯用法

  • 不,事实上,
    if(str).
    等同于
    if(str!=NULL).
  • C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组
    {'H','e','l','l','o','\0'}
    。与指针一样,0或null值在逻辑表达式中被视为
    false
    。因此
    while(*end)…只要
    结束
    未达到空字符,则将在
    循环时执行
    的主体
  • 不适用
  • 正确-这将前进到字符串中的下一个字符或null终止符
  • 这是反向算法。在第一个循环之后,
    end
    指向字符串末尾的一个,而
    str
    指向开始。现在我们将这两个指针指向彼此,交换字符

  • 这些都是相当标准的C编程习惯用法

  • 不,事实上,
    if(str).
    等同于
    if(str!=NULL).
  • C字符串以null结尾,这意味着“Hello”在内存中表示为字符数组
    {'H','e','l','l','o','\0'}
    。与指针一样,0或null值在逻辑表达式中被视为
    false
    。因此
    while(*end)…只要
    结束
    未达到空字符,则将在
    循环时执行
    的主体
  • 不适用
  • 正确-这将前进到字符串中的下一个字符或null终止符
  • 这是反向算法。在第一个循环之后,
    end
    指向字符串末尾的一个,而
    str
    指向开始。现在我们将这两个指针指向彼此,交换字符
  • if(str){}
    是否等同于
    if(str==NULL){}

    否,
    if(str){}
    等同于
    if(str!=NULL){}

    while(*end){}
    是什么意思?它到底在做什么

    由于
    end
    的类型是
    char*
    while(*end){}
    相当于
    while(*end!='\0')
    。循环对输入字符串的所有字符执行。当到达字符串的末尾时,循环停止

    假设
    if(str){}
    是与
    if(str==NULL){}

    这是不正确的。我没有读这段的其余部分,因为你一开始的陈述不正确

    代码
    ++end
    的指针运算正确吗?所以每次递增,地址都会移动到它旁边的地址

    排序。
    end
    的值递增。它指向在操作之前它用来指向的下一个对象

    当(str

    在上一个
    while
    循环中,
    end
    str
    开始递增,直到到达字符串的末尾。在此循环中,
    end
    递减,直到到达字符串的开头。当
    end
    到达
    str
    时,
    while
    语句的条件计算结果为
    false
    则循环中断

    更新

    关于

    您将向函数传递什么来使
    str=NULL

    你只要打个电话就可以了

    #include <iostream>
    #include <cstdlib> 
    using namespace std; 
    
    void reverse(char* str){
        char *end = str; 
        char tmp; 
        if(str){
            cout << "hello" << endl;
            while(*end){
                cout << end << endl;
                ++end; 
            }
    
            --end; 
    
            while (str < end){
                tmp = *str;
                *str++ = *end; 
                *end-- = tmp;
            }
        }
    }
    
    int main(){
        char str[] = "helloyouarefunny"; 
        string input = str; 
        reverse(str); 
        for(int i = 0; i < input.length(); i++) {
            cout << str[i]; 
        }
    }
    
    我尝试执行
    char str[]=NULL;

    str
    是一个字符数组。可以使用以下两种方法初始化它:

    reverse(NULL); 
    
    请注意,在第二个方法中存在一个显式指定的空字符

    您不能将类型为array of
    char
    s的变量初始化为NULL。该语言不允许这样做。您可以将指针初始化为NULL,但不能初始化数组

     // This is what you have done.
     char str[] = "helloyouarefunny"; 
    
     // Another, more tedious way:
     char str[] = {'h','e','l','l','o','y','o','u','a','r','e','f','u','n','n','y', '\0'}; 
    
    if(str){}
    是否等同于
    if(str==NULL){}

    否,
    if(str){
    
    char* s1 = NULL;   // OK
    reverse(s1);       // Call the function
    
    s1 = malloc(10);   // Allocate memory for the pointer.
    strcpy(s1, "test") // Put some content in the allocated memory
    reverse(s1);       // Call the function, this time with some content.
    
    while (str < end){
        tmp = *str;
        *(str++) = *end; 
        *(end--) = tmp;
    }