c - 在指针数组中打印指针指向的值
问题描述
- 我正在尝试打印存储在 ptr 数组中的指针所指向的值。预期输出为 1,2,3,4,但该函数会打印垃圾。
- 试图了解如何访问数组中的值并打印它们。
我知道有一种简单的方法可以只使用双指针指向数组并打印,但为了学习,尽量不要使用双指针而只使用指向整个数组的指针
#include <stdio.h>
#include <stdint.h>
uint8_t a = 1;
uint8_t b = 2;
uint8_t c = 3;
uint8_t d = 4;
uint8_t *ptr[] = {&a, &b, &c ,&d}; //Pointer is array of 4 pointer to uint8_t
void foo(uint8_t* (*ptr)[4]) //Ptr is pointer to array of 4 pointer to uint8_t
{
uint8_t * temp =(uint8_t*)ptr[0];
for(uint8_t i=0;i<4;i++){
printf("%d\n",*(temp+i)); //Does not print 1,2,3,4 as expected
}
}
int main()
{
foo(&ptr);
return 0;
}
解决方案
您的代码似乎不必要地复杂,但我想您可以在下面做。
#include <stdio.h>
#include <stdint.h>
uint8_t a = 1;
uint8_t c = 3;
uint8_t b = 2;
uint8_t d = 4;
uint8_t *ptr[] = {&a, &b, &c ,&d};
void foo(uint8_t* (*ptr)[4])
{
uint8_t ** temp =(uint8_t**)*ptr;
for(uint8_t i=0;i<4;i++){
printf("%d\n",**(temp+i));
}
}
int main()
{
foo(&ptr);
return 0;
}
推荐阅读
- wordpress - 导出 WooCommerce 可预订产品数据
- c# - 文本框值到 URL 链接
- c++ - Clion 退出代码 -1073741571 (0xC00000FD)
- ios - AVSpeechSynthesizer 不工作 使用一次后
- php - 删除 php 页面(不是数据库)中的表行,并且在重新加载页面后无法将其显示回来
- sql - 带有 Case When 语句的 SQL 随机样本 (Teradata)
- javascript - 从孩子设置父母的状态 - 反应?
- php - Wordpress 将图像上传到文件夹和 Db 链接甚至子类别
- hyperledger-fabric - 管理超级账本结构区块链网络的管理工具?
- c# - 如何使用 C# 更改 Windows 服务恢复选项