C指针和调用方法?

时间:2015-06-05 21:07:39

标签: c pointers

我是C的新手,我很难理解如何使用指针调用方法。目前这段代码应该反转以null结尾的字符串,但是我得到了错误

main.c:8:12: error: use of undeclared identifier 'sas'
         char* N = sas;
                   ^ main.c:10:10: warning: incompatible integer to pointer conversion passing 'char' to parameter of type
       'char *'; remove * [-Wint-conversion]
         reverse(*N);
                 ^~ ./header.h:3:27: note: passing argument to parameter 'N' here EXTERN void reverse(char *N);

我的实际代码是这样的: 主要:

#include <stdio.h> 
#include <stdlib.h> 
#include "header.h"

int main(int argc, char *argv[]) 
{ 
    char* N = sas; 
    reverse(*N); 
}

反向:

#include <stdio.h>
#include "header.h
#include <stdlib.h>

void reverse(char *str) 
{
    char* end = str; 
    char temp; 
    printf("this is *str: %c\n", *str); 
    if (str) 
    { 
        while (*end) 
        {
            ++end: 
        } 
        end--; 
        while (str < end) 
        { 
            temp = *str
            *str++ = *end; 
            *end-- = temp; 
        }
    }
 }

header.h:

#define EXTERN extern
EXTERN void reverse(char *N) 

感谢您的帮助和时间!

3 个答案:

答案 0 :(得分:1)

首先,在这段代码中存在许多语法错误:

  1. 'sas'那是什么?你的编译器认为它是一个变量,但找不到任何具有该名称的变量。如果你想放一个“sas”字符串,那么:

    char* N = "sas";
    
  2. 不一致的括号。更多关闭括号而不是打开括号,并且在声明功能后没有开括号。

答案 1 :(得分:1)

int main(int argc, char *argv[]) 
{ 
    char* N = "sas"; 
    reverse(*N); 
}

首先让N指向一个字符串常量。然后你试图反转N指向的内容。但由于N指向一个字符串常量,因此您试图反转一个字符串常量。根据定义,常量不能改变它们的值。

答案 2 :(得分:-3)

据我所知,你正试图扭转一个字符串。这只是对代码的一点修改。

完整来源:

@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(myObj) as String)