wrdt24435 发表于 2018-8-25 17:34:55

vodi 函数(u32 *a)里的*a是要往函数输入什么?

请教各位这个函数输入量的意思是什么?
意思是u32类型的*p吗? 在例程里输入的是 u32 a; 这么定义的数组,而且使用该函数时是 函数(a) 这样输入,
另外函数里 *a++意思是指针地址+1? 例程里输入的都是上述的数组,*a++在例程执行出来的意思相当于是a的值

zcl201207 发表于 2018-8-25 18:48:24

最好的老师是实践,就是做实验看结果。。。

feixiang20 发表于 2018-8-25 22:18:45

描述得有点难理解 ...

你的意思 void fn(u32 *a); 数据中的a是输入什么数据是么? 如果是这样, 那a就要输入一个u32型的指针地址, 如:
u32 val = 0;
fn( &val);

*a++, 取值运算符与自增运算符同级, 自右向左结合, 所以先自增后取值; "*a++在例程执行出来的意思相当于是a的值"明白你的意思, 应该是对的!

stm1024 发表于 2018-8-27 08:20:54

*a++意思是指针地址+1
这种说法没错但是不太准确,严格意义上来说,是按其类型递增相应的位数。例如原来的地址是0x0004,如果你是uint8_t*的指针类型,那么递增以后地址就是0x0005,如果是uint32_t,递增以后是0x0008,递增了一个类型所占据的字节数

sincomaster 发表于 2018-8-27 08:50:43

stm1024 发表于 2018-8-27 08:20
这种说法没错但是不太准确,严格意义上来说,是按其类型递增相应的位数。例如原来的地址是0x0004,如果你 ...

stm1024大神,我怎么觉楼主说的没错呢?楼主说的是指针地址+1,指针已经指定数据类型为u32 *了,这样地址+1就是跳转4个或8个字节了,让大神见笑了,

stm1024 发表于 2018-8-27 09:20:13

sincomaster 发表于 2018-8-27 08:50
stm1024大神,我怎么觉楼主说的没错呢?楼主说的是指针地址+1,指针已经指定数据类型为u32 *了,这样地址+1就 ...

大神不敢当,我也只是想说明一下观点,就是指针不一定是按一个字节往前跑的

wrdt24435 发表于 2018-8-27 13:05:01

zcl201207 发表于 2018-8-25 18:48
最好的老师是实践,就是做实验看结果。。。

原理不知道的话,做实验只能依葫芦画瓢那样仿照着例程,感觉这样就不能灵活使用了。

wrdt24435 发表于 2018-8-27 13:25:06

feixiang20 发表于 2018-8-25 22:18
描述得有点难理解 ...

你的意思 void fn(u32 *a); 数据中的a是输入什么数据是么? 如果是这样, 那a就要输 ...

看了各位回复,首先u32型指针地址指的是4个地址的值意思吧?比如地址0x0000到0x0003的值是1,2,3,4,u32型指针能指向0x01020304的值
1. 那要怎么指呢?也就是u32 *p=什么?是0x0000吗?
2. 其次也就是说数组a其实是指针地址,而a则是一个变量,那么比如我想往void fn(u32 *a)这个函数输入a,是(u32 *)&a这样输入吗?
3. 为什么我用const u32 a定义的数组输入函数里编译会报错,是因为const u32和u32类型不一样需要强制类型转换?
表达的不清楚请见谅,有些地方不知道用什么词汇好。

wrdt24435 发表于 2018-8-27 13:32:18

stm1024 发表于 2018-8-27 09:20
大神不敢当,我也只是想说明一下观点,就是指针不一定是按一个字节往前跑的 ...

看了各位回复,首先u32型指针地址指的是4个地址的值意思吧?比如地址0x0000到0x0003的值是1,2,3,4,u32型指针能指向0x01020304的值
1. 那要怎么指呢?也就是u32 *p=什么?是0x0000吗?
2. 其次也就是说数组a其实是指针地址,而a则是一个变量,那么比如我想往void fn(u32 *a)这个函数输入a,是(u32 *)&a这样输入吗?
3. 为什么我用const u32 a定义的数组输入函数里编译会报错,是因为const u32和u32类型不一样需要强制类型转换?
表达的不清楚请见谅,有些地方不知道用什么词汇好。

sincomaster 发表于 2018-8-27 16:37:21

wrdt24435 发表于 2018-8-27 13:32
看了各位回复,首先u32型指针地址指的是4个地址的值意思吧?比如地址0x0000到0x0003的值是1,2,3,4,u32型 ...
楼主对指针的基础知识还不是很扎实啊,在多去看看
页: [1] 2
查看完整版本: vodi 函数(u32 *a)里的*a是要往函数输入什么?