首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取地址而不是结构值

获取地址而不是结构值
EN

Stack Overflow用户
提问于 2015-08-15 23:07:09
回答 1查看 51关注 0票数 0

我在通过指针从结构中获取整数值时遇到了问题,而不是在获取指针地址时获得预期的值。

我在main.c中

代码语言:javascript
复制
struct sonicPins *args1;



int main(){
pthread_t thr1, thr2, thr3, thr4;
//void(*foo1)(int, int, int);
//void(*foo2)(void *args);
//foo1 = &calcSonicS;
//foo2 = &threadFunc;

args1 = malloc(sizeof(struct sonicPins));

args1->trig1 = 21;
args1->echo1 = 20;
//front right.
args1->trig2 = 16;
args1->echo2 = 12;
//rear left;
args1->trig3 = 26;
args1->echo3 = 19;
//rear right.
args1->trig4 = 13;
args1->echo4 = 6;
//printf("print args %d", args1.trig1);
//if(args1!=NULL){
 pthread_create(&thr1, NULL, &threadFunc,(void*) &args1);
//}

sonicThread.h

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
#include<string.h>
#include<errno.h>
#include<sys/time.h>
#include<wiringPi.h>

typedef struct sonicPins{
//front left.
int trig1;
int echo1;
//front right.
int trig2;
int echo2;
//rear left;
int trig3;
int echo3;
//rear right.
int trig4;
int echo4;
}args;

extern void* threadFunc(void *sonicPinsPtr);


void* threadFunc(void  *sonicPinsPtr)
{

    struct sonicPins *args = sonicPinsPtr;
    int trig = args->trig1;
    int echo = args->echo1;
    printf("threadFunc got  trigger value: %d and echo value %d\n", echo, trig);
    value = setup(trig, echo);
    printf("distance measured %d\n", value);
}

打印距离在此阶段将不起作用,因为回声和trig未获得其预期的引脚值。另一个打印测试是输出完全不正确的值。

它的输出

代码语言:javascript
复制
threadFunc got  trigger value: 0 and echo value 26222600

应该只是两位数的整数,我不知道如何解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-08-15 23:13:00

当您将args1传递给pthread_create时,您就有了额外的间接性。args1已经是一个指针。

更改:

代码语言:javascript
复制
pthread_create(&thr1, NULL, &threadFunc,(void*) &args1);

至:

代码语言:javascript
复制
pthread_create(&thr1, NULL, &threadFunc,(void*) args1);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32026014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档