① 单片机c语言怎样用指针访问code区数组中的某一元素
void
CHcnkDlg::OnButton1()
{
//
TOD
Add
your
control
notification
handler
code
here
char
str[8];
//定义一个字符串数组
,用来存放列表框1中输入的内容
char
*ptr;
//定义一个指针,用来处理字符串数组中的元素
char
cResult[8];
//定义一个字符串,用来存放列表框1中的数据经过处理后显示在列表框2中的
内容
m_List1.GetLBText(str,;
//调用GetLBText()函数,获得列表框1输入的内容,存放在字符串
数组str
中
ptr=str+2;
*ptr=0;
m_List2=(LPCTSTR)cResult;
//将结果字符串赋给对象m_List2
UPdateData(FALSE);
//更新屏幕
}
希望可以帮助到你
② 学了51单片机,感觉没怎么用到指针,什么时候才用到指针
不用都可以。我现在只有做显示电路驱动时用指针取下字库或数据,其余的什么函数指针,指针嵌套之类的全没用到。但不影响我的工作。
上位机我会的不多,用的是BCB,但我自己不会主动用指针,一般都是复制来的程序或系统APP函数里用的多点。
指针一般是上位机软件或大型单片机程序才用的多些,好处就是程序的表述上更好看或更方便调用,对于小程序完全可以不用。
③ //SP=0x60; 为什么在有些单片机函数中要设置栈指针,设置栈指针有什么作用SP又是什么东西呢 先谢了!
栈指针是用来在栈空间寻址的,而栈空间其实就是个内存区域,在栈中存入数据的话,sp自动减少,在栈中读取数据的话,sp自动增加,这就构成了一个后进先出的内存空间
sp其实是一个寄存器,其中只能保存一个指针,而这个指针就指向了栈空间中的最高层,即栈顶
④ 【单片机】 知道函数的地址怎么调用
还需要知道函数的调用规则,比如:
int fun1(int a,int b) { return a+b; }
int fun2(int a,int b) { return a-b; }
typedef int (*pfun)(int,int);
#define MYFUNCTION1 0x80002000 //假设函数fun1的地址位于0x80002000
#define MYFUNCTION2 0x80003000 //假设函数fun2的地址位于0x80003000
void main()
{ int a=2,b=1,c;
fun=(pfun)MYFUNCTION1; c=(*fun)(a,b);
fun=(pfun)MYFUNCTION2; c=(*fun)(a,b);
}
⑤ C语言的指针,在写51单片机程序用得上吗
可以的。
在51单片机的嵌入式C语言中,指针同样是被支持的。
所以在单片机上一样可以使用指针操作,具体使用方法,与标准C语言并没有不同。
不过需要注意的是,使用指针代表着间接寻址,相对变量的直接寻址,速度要稍慢一些。而单片机运算速度较慢,大量使用指针有可能会降低执行效率,影响效果。所以除非必要,还是少用指针。
⑥ 51单片机函数参数传指针方式错误的问题
主函数就5句话,分别用1、2、3、4、5标识。
你在第1,2句定义了变量并赋值,但是,在第3、4句的时候可能会把第1、2句的东西给误覆盖了。因为地址可能有重叠。
可以用两种办法去调试:
方法1:在第1、2句只定义变量,不赋值,在第4、5句之间加上这两句话:a='t';p=&t;
方法2:在DrawSingleAscii内部这三行之后,加上一句:
uchar i, j;
uchar str;
uint OffSet;
*pAscii = 't'; //加上这句
看看是什么效果。
⑦ 51单片机中,指针函数 在C语言程序 如何使用
你好,比较方便的实现方式是在函数的外部申请数组;在调用函数的时候传入数组的地址进行操作。如果一定要在子函数内部申请空间并返回地址,那么需要在子函数内部动态申请内存空间。具体的方法一般是使用标准库中的malloc函数。对于c51函数库,参考这个链接:http://www.keil.com/support/man/docs/c51/c51_malloc.htm
⑧ 单片机C51,C语言的一个指针问题
P0 = *((uint8 data*)&ledBuff+i);
ledBuff是缓冲区的起始位置,它的类型你可以从函数外面看到,因为它是一个全局变量。
&ledBuff是取ledBuff的地址,
(uint8 data*)&ledBuff是把取得的地址强制转换为uint8 data类型的指针。
((uint8 data*)&ledBuff+i是将这个指针位移,偏移量是i
*((uint8 data*)&ledBuff+i)最后加*号是将便宜后的地址中的值取出来,最终赋值给了P0.
这里P0是一个端口。