在将函数作为参数的函数内操作指针值

时间:2014-06-29 19:47:25

标签: c function pointers

我已经阅读了很多关于stackoverflow的问题,但是找不到任何关于如何处理在函数内部分配和操作指针的问题的解决方案:有人可以告诉我这段代码有什么问题吗? (我想通过指针通道分配和分配值到* D并通过指针打印相同)

#include<stdio.h>
#include<stdlib.h>

float *D;

void pointerpass(float **ptr1)
{
    *ptr1=(float*)malloc(3*sizeof(float));
    *(ptr1+0)=1.33;
    *(ptr1+1)=2.33;
    *(ptr1+2)=3.33;
}

void pointerprint(float **ptr2)
{
    int j=0;
    for (j=0;j<3;j++)
        printf("\n%f\n",*(ptr2+j));
}

int main() 
{
    pointerpass(&D);
    pointerprint(&D);
    return 0;
}

2 个答案:

答案 0 :(得分:1)

我们走了

#include<stdio.h>
#include<stdlib.h>

float * pointerpass(){
   float *ret = malloc(3*sizeof(float));
   ret[0] = 1.33f;
   ret[1] = 2.33f;
   ret[2] = 3.33f;
   return ret;
}
void pointerprint(float *array) {
    int j=0;
    for (j=0;j<3;j++) {
        printf("\n%f\n",array[j]);
    }
}

int main() {
   float *x = pointerpass();
   pointerprint(x);
   free(x); // We do not like memory leaks
   return 0;
}

答案 1 :(得分:0)

void pointerpass(float **ptr1){
    *ptr1=(float*)malloc(3*sizeof(float));
    (*ptr1)[0]=1.33;
    (*ptr1)[1]=2.33;
    (*ptr1)[2]=3.33;
}
void pointerprint(float **ptr2){
    int j=0;
    for (j=0;j<3;j++)
        printf("\n%f\n", (*ptr2)[j]);
}