全局指针变量:
- ws2812_pixel_t *gtp_PixelList;
复制代码更新指针的函数:
- void WS2812_UpdatePixels(ws2812_pixel_t *ftp_PixelList,ws2812_pixel_t *ftp_PixelNewList)
- {
- if(se_Ws2812Status == WS2812_IDLE)
- {
- ftp_PixelList = ftp_PixelNewList;
- se_Ws2812Status = WS2812_SNEDING_DATA;
- }
- }
复制代码数组:
- ws2812_pixel_t code switch_1_steady_on[] =
- {
- PIXEL_IS_RED,
- PIXEL_IS_RED,
- PIXEL_IS_RED,
- PIXEL_IS_RED,
- PIXEL_IS_RED,
- PIXEL_IS_RED,
- PIXEL_IS_RED,
- };
复制代码
函数应用:
- WS2812_UpdatePixels(gtp_PixelList,switch_1_steady_on);
复制代码执行上述语句之后,观察断点可以执行到ftp_PixelList = ftp_PixelNewList;
但最终switch_1_steady_on的地址并没有传递给ftp_PixelList。一下脑塞了。
请坛友帮忙看看。
另,keil中除了用print的方法,可以直接观察到指针变量指向到什么地址吗?
你的问题搞定了吗,楼上几位的说法让我直接懵了。 经常这样用。数组名不就是第一元素的地址啊,赋给一级指针不就是正常的吗。 另外,看到你数组定义中了‘code'关键字,能说下你的平台吗?51, ARM?
指针变量做参数传到函数其实本身是值的传递,变量已经是另一个变量了。你如果只是读指针指向的内容的话,这样是没问题的,因为这个地址已经传进去了。但是你要是想向外面返回指针指向的新地址,也就是改外面那个指针内容,那么你就得知道这个指针自己的地址,所以就是指针的指针
全局变量:
- ws2812_pixel_t **gtpp_PixelList;
复制代码函数:- void WS2812_UpdatePixels(ws2812_pixel_t **ftpp_PixelList,ws2812_pixel_t *ftp_PixelNewList)
- {
- if(se_Ws2812Status == WS2812_IDLE)
- {
- ftpp_PixelList = &ftp_PixelNewList;
- se_Ws2812Status = WS2812_SNEDING_DATA;
- }
- }
复制代码应用:- WS2812_UpdatePixels(gtpp_PixelList,switch_1_steady_on);
复制代码还是没有得到想要的结果还没有搞定,在测试。
keil可以观察到指针指向了什么地址吗?我想用断点看一下。
还是没得到想要结果
一周热门 更多>