我需要声明一个从指针数组返回字符串的函数..我正在编程PIC,并且正在使用LCD ..作为接口。 有了这段代码,我有了我想要的东西:
<div class="divTable">
<div class="thead">
<div class="tr">
<div class="th">Filename</div>
<div class="th">Type</div>
<div class="th">Size</div>
</div>
</div>
<div class="tbody">
<div class="tr">
<div class="td">Why Cannot Work.jpg</div>
<div class="td">Image</div>
<div class="td">12.1 KB</div>
</div>
<div class="tr">
<div class="td">Lorem Ipsum.jpg</div>
<div class="td">Image</div>
<div class="td">12.1 KB</div>
</div>
<div class="tr">
<div class="td">Dolor Sir Amet.jpg</div>
<div class="td">Image</div>
<div class="td">12.1 KB</div>
</div>
</div>
</div>
我得到“ 5” ..这就是我想要的..但是当我尝试为此创建函数时。.
// CONFIGURATION BITS
#pragma config FOSC = HS // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
#pragma config LVP = OFF // Low-Voltage In-Circuit Serial Programming Enable bit
#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit
#pragma config WRT = OFF // Flash Program Memory Write Enable bits
#pragma config CP = OFF // Flash Program Memory Code Protection bit
#define _XTAL_FREQ 8000000
// DEFINING LCD PINS
#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7
#include <xc.h>
#include "lcd.h"
#include <stdio.h>
#include <stdlib.h>
void main()
{
TRISD = 0x00; //PORTD as output for LCD
Lcd_Init();
Lcd_Clear();
while(1)
{
Lcd_Set_Cursor(1,1);
char *keypress;
int key = 2;
char *key2[] = {"3", "4", "5"};
keypress = key2[key];
Lcd_Write_String(keypress);
__delay_ms(50);
}
}
我不明白为什么会得到mm ..我不确定是否声明了错误的函数,或者指针做错了,谢谢
答案 0 :(得分:2)
您的函数返回char
,但您返回char *
。
将返回类型更改为char *
并提高编译器警告以捕获那些东西。
答案 1 :(得分:1)
char *key2[] = {"3", "4", "5"};
return key2[key];
在这里,key2
是char
指针的数组,key2[key]
是指向数组key
的索引key2
的指针,该指针指向a的第一个字符字符串。
现在,查看函数kbd_getc()
的返回类型:
char kbd_getc(){
^^^^
它是char
类型。这意味着,您正在从假定要返回字符的函数中返回字符串。
如果我编写了一个简单的程序来检查您的kbd_getc()
,则会收到有关语句return key2[key];
的警告消息-
warning: incompatible pointer to integer conversion returning 'char *' from a function with result type 'char';
如果我将返回类型更改为char *
char * kbd_getc(){
警告消息消失,我得到所需的输出:
$ ./a.out
5
答案 2 :(得分:-2)
只需尝试一下
char kbd_getc(){
int key = 2;
char *key2[] = {"3", "4", "5"};
char a = key2[key];
return a ;
}
我认为您正在返回数组。
您需要返回一个字符。
谢谢