标题:
stm32 C语言void函数(u32 *a)里的*a是要往函数输入什么?
[打印本页]
作者:
wrdt24435
时间:
2018-8-25 17:35
标题:
stm32 C语言void函数(u32 *a)里的*a是要往函数输入什么?
请教各位这个函数输入量的意思是什么?
意思是u32类型的*p吗? 在例程里输入的是 u32 a[n]; 这么定义的数组,而且使用该函数时是 函数(a) 这样输入,
另外函数里 *a++意思是指针地址+1? 例程里输入的都是上述的数组,*a++在例程执行出来的意思相当于是a[x+1]的值
作者:
INSPIRE
时间:
2018-8-25 17:54
可以传入一个u32类型的指针变量。如果传入一个u32类型的数组名,实质上是传入了指向该数组第一个元素的指针。
作者:
cjm82
时间:
2018-8-26 09:20
a++意思是对应数据类型的地址加1,如同a[x+1],使用时要注意,不要超出范围导致野指针
作者:
CrlikenNN
时间:
2018-8-26 09:50
指针变量
作者:
大可爱
时间:
2018-8-26 13:49
可以输入一个指针型变量
作者:
DerekTao
时间:
2018-8-26 14:57
输入一个u32类型的指针变量,如果定义了数组a[n],可以将数组a[n]的首地址a(或&a[0])传入,*a就指向了首地址里的内容
作者:
wyl_188
时间:
2018-8-26 16:19
首先,void func(u32 *a)这个函数的形参是u32 *a,那么a是一个u32类型的指针变量。需要传入一下u32类型的地址。
作者:
xiayutian
时间:
2018-8-29 11:17
1.0地址而且是一个无符号32位的数据的地址;2.0输入的为a就可以或者&a【0】都代表数组的首地址;3.0*a++这个你要注意是先自加还是先给地址
作者:
willy0101
时间:
2018-8-29 14:17
指针变量啊!
作者:
arose
时间:
2018-8-29 14:32
a是数组指针,*a++是u32这个值加1, a++指数组索引加1及指向下一个u32数,地址是增加了sizeof(u32)的
作者:
SunshineRain
时间:
2018-8-30 09:55
指针变量,传地址
作者:
SunshineRain
时间:
2018-8-30 09:56
指针变量,传地址
作者:
zhaoyinlo
时间:
2018-8-31 16:09
你先看我写的代码然后 再去理解你写的就好理解了
定义一个整型数组 int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
定义一个返回值为空的想用数组做形参的函数
//void fun(int a[10])--------(才开始学c语言是的写法)
//void fun(int a[]) ----------(学习一段时间后的写法)
void fun(int *a) ----------(最常用的写法 一般一维数组做函数参数是 编译器内部会把 形参 转化为指针, 因此我们如果要用一维数组做形参 一般都会直接写成指针形式)
{ 函数体 }
PS: 如果你以后接触到二维数组做形参时 可能会这样写:
void fun(int a[常量][常量]) void fun(int a[][常量]) 或 void fun(int (*a)[常量]) 三种形式
因为 数组要考虑步长问题 所以 会退化为数组指针
而指针数组 char *str[] = { "1111", "2222"}; 做形参时
void fun(char *str[]) 和 void fun(char **str) 两种形式
然后再看你的 void函数(u32 *a) 首先 u32应该是数据类型(一般 u32 是无符号 32位整型)
u32 *a 应该是 一维数组做函数参数(形参) 传入的是 数组 首元素地址;
注意: 还有一种情况 就是 想通过形参 去改 实参的值 (这得根据 你的代码具体来看) 因为 指针存在的最大意义就是间接赋值。
另外函数里 *a++意思是指针地址+1?
u32 p = u3常量;定义了一个变量
u32 *a = NULL; a = &p 定义了一个指针变量 并指向p(把p的地址赋给a) a++ 相当于地址加了一个(u32 类型所占内存的字节)数。 而*a++; 是对 a 该内存的值进行加1(也就是p加1);
希望 对你有帮助 还有不理解的地方 可以继续问我哦
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1