我是C新手,我很難理解如何使用指針調用方法。目前,該代碼應該扭轉空值終止字符串,但我得到的錯誤 C指針和調用方法?
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)
感謝您的幫助和時間!
1.請選擇更好的編碼風格,這種風格很難遵循,2.什麼是'sas'?你想做什麼? 3.你的代碼有幾個不編譯的原因,例如你有'++結束:'???還有很多明顯不需要的關閉'}'大括號,儘管我懷疑你可能遺漏了代碼。 –
你可能需要'char * N =「sas」;'(一個字符串),你應該調用'reverse(N)'。那麼你只會因爲字符串不可修改而崩潰。所以,實際上,你需要'char N [] =「sas」;'。當然,很難發現原始字符串和反向字符串之間的區別。你可能應該用'char N [] =「xyz」;'或其他不對稱的東西來測試。你正在'reverse()打印'打印一個字符,而不是整個字符串。你應該在'main()'中打印'after'字符串。否則,你將不知道你的代碼是否做出了正確的改變。 –
'reverse()'沒有塊。請發佈完整的代碼,分解到相關部分。 – Olaf