在函数中使用指针和结构

时间:2013-08-30 17:56:34

标签: c++ pointers struct user-defined-functions

我刚刚开始研究C ++,而我似乎无法理解几个概念。

上下文

STRUCT:

typedef struct {
    int left;
    int right;
    int mid;
} boundtype;

功能:

boundtype sortintarray(int *curArray[], boundtype bounds){
    int left(bounds.left);
    int right(bounds.right);
    unsigned int refValue(*curArray[(left+right)/2]);

    while (left < right){
        if (*curArray[left] > refValue){
            if (*curArray[right] < refValue){
                int swap(*curArray[left]);
                *curArray[left] = *curArray[right];
                *curArray[right] = left;
                right--;
                left++;
            } else{right--;}
        } else{left++;}
    }
    bounds.left = left;
    bounds.right = right;
    bounds.mid = (left + right)/2;

    return bounds;
};

功能调用:

unsigned int pancakes[10]; //Filled via std::cin
int size(sizeof(pancakes)/sizeof(int));
boundtype bounds(0,size - 1);
bounds = sortintarray(&pancakes, bounds);

我的问题

1)

当我定义结构时,是否可以执行以下操作:

typedef struct{
   int a;
   int b;
   int c = a/b;
}

并且希望在a和b更新时不断更新c?

2)

我的方式是传递结构/返回结构/定义函数是否正确?

3)

我理解*引用地址的值,而&引用值的地址。我对如何在函数中使用它感到困惑。如何传入值,如何在函数输入中定义它,以及如何在函数中引用值?

这个特定示例的完整目标是编辑原始数组而不在函数中复制。

非常感谢任何建议/帮助!

1 个答案:

答案 0 :(得分:1)

1)不。但你的代码是C而不是C ++。 C ++实现你想要的方式是

struct boundtype
{
    int a;
    int b;
    int get_c() const { return a/b; }
};

2)是的

3)要对数组进行排序,只需要一个指针

boundtype sortintarray(int *curArray, boundtype bounds){
    int left(bounds.left);
    int right(bounds.right);
    unsigned int refValue(curArray[(left+right)/2]);

    while (left < right){
        if (curArray[left] > refValue){
            if (curArray[right] < refValue){

指向数组第一个元素的指针足以访问整个数组。