vodi 函数(u32 *a)里的*a是要往函数输入什么?
请教各位这个函数输入量的意思是什么?意思是u32类型的*p吗? 在例程里输入的是 u32 a; 这么定义的数组,而且使用该函数时是 函数(a) 这样输入,
另外函数里 *a++意思是指针地址+1? 例程里输入的都是上述的数组,*a++在例程执行出来的意思相当于是a的值
最好的老师是实践,就是做实验看结果。。。 描述得有点难理解 ...
你的意思 void fn(u32 *a); 数据中的a是输入什么数据是么? 如果是这样, 那a就要输入一个u32型的指针地址, 如:
u32 val = 0;
fn( &val);
*a++, 取值运算符与自增运算符同级, 自右向左结合, 所以先自增后取值; "*a++在例程执行出来的意思相当于是a的值"明白你的意思, 应该是对的! *a++意思是指针地址+1
这种说法没错但是不太准确,严格意义上来说,是按其类型递增相应的位数。例如原来的地址是0x0004,如果你是uint8_t*的指针类型,那么递增以后地址就是0x0005,如果是uint32_t,递增以后是0x0008,递增了一个类型所占据的字节数 stm1024 发表于 2018-8-27 08:20
这种说法没错但是不太准确,严格意义上来说,是按其类型递增相应的位数。例如原来的地址是0x0004,如果你 ...
stm1024大神,我怎么觉楼主说的没错呢?楼主说的是指针地址+1,指针已经指定数据类型为u32 *了,这样地址+1就是跳转4个或8个字节了,让大神见笑了, sincomaster 发表于 2018-8-27 08:50
stm1024大神,我怎么觉楼主说的没错呢?楼主说的是指针地址+1,指针已经指定数据类型为u32 *了,这样地址+1就 ...
大神不敢当,我也只是想说明一下观点,就是指针不一定是按一个字节往前跑的 zcl201207 发表于 2018-8-25 18:48
最好的老师是实践,就是做实验看结果。。。
原理不知道的话,做实验只能依葫芦画瓢那样仿照着例程,感觉这样就不能灵活使用了。 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类型不一样需要强制类型转换?
表达的不清楚请见谅,有些地方不知道用什么词汇好。 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类型不一样需要强制类型转换?
表达的不清楚请见谅,有些地方不知道用什么词汇好。 wrdt24435 发表于 2018-8-27 13:32
看了各位回复,首先u32型指针地址指的是4个地址的值意思吧?比如地址0x0000到0x0003的值是1,2,3,4,u32型 ...
楼主对指针的基础知识还不是很扎实啊,在多去看看
页:
[1]
2