关于C51指针的用法不懂,求教大神。
时间:10-02
整理:3721RD
点击:
/* ADC转换值转为实际电压值的字符串形式,str-字符串指针,val-AD转换值 */
void ValueToString(unsigned char *str, unsigned char val)
{
//电压值=转换结果*2.5V/255,式中的25隐含了一位十进制小数
val = (val*25) / 255;
str[0] = (val/10) + '0'; //整数位字符
str[1] = '.'; //小数点
str[2] = (val%10) + '0'; //小数位字符
str[3] = 'V'; //电压单位
str[4] = '\0'; //结束符
}
关于这段函数我是有很多地方不懂。首先在主函数中是unsigned char str[10]作为实参传递给这个函数的字符串指针,首先我不懂的是,这个函数的第一个形参是指向无符号字符变量的指针,为什么数组和字符串也能传递进来呢?
还有,最疑惑的是,在函数里面,str[0]、str[1]、str[2]、str[3]、str[4]这五个不是指针变量吗?不是只能存储地址吗?为什么可以直接赋值字符呢?另外这个怎么看起来也是在给数组赋值啊?...好疑惑啊,,指针为什么可以怎么用呢?求教大神,谢谢!
void ValueToString(unsigned char *str, unsigned char val)
{
//电压值=转换结果*2.5V/255,式中的25隐含了一位十进制小数
val = (val*25) / 255;
str[0] = (val/10) + '0'; //整数位字符
str[1] = '.'; //小数点
str[2] = (val%10) + '0'; //小数位字符
str[3] = 'V'; //电压单位
str[4] = '\0'; //结束符
}
关于这段函数我是有很多地方不懂。首先在主函数中是unsigned char str[10]作为实参传递给这个函数的字符串指针,首先我不懂的是,这个函数的第一个形参是指向无符号字符变量的指针,为什么数组和字符串也能传递进来呢?
还有,最疑惑的是,在函数里面,str[0]、str[1]、str[2]、str[3]、str[4]这五个不是指针变量吗?不是只能存储地址吗?为什么可以直接赋值字符呢?另外这个怎么看起来也是在给数组赋值啊?...好疑惑啊,,指针为什么可以怎么用呢?求教大神,谢谢!
str就是地址,这是指针的常用法,书上有写!
建议你看一下C语言程序设计字符串指针与数组指针那节
数组的名字就是指针的名字
传的是一个地址
6666666666666666666666666666666666666666