c语言 - 为什么我无法获得结构指针的正确值?



我想在函数中使用ptr[1]->ReadLength,但它总是显示0。

解决这个问题的方法是什么?

谢谢。

struct cache_read_block
{
unsigned short ReadLength;    // How many words
};
typedef struct cache_read_block CACHE_READ_BLOCK;
void getValue(CACHE_READ_BLOCK (*ptr)[100])
{
printf("index %dn", ptr[0]->ReadLength);
printf("index %dn", ptr[1]->ReadLength);
}
int main(void) {
CACHE_READ_BLOCK arr[100] = {0};
arr[0].ReadLength = 10;
arr[1].ReadLength = 5;
getValue(&arr);
system("pause");
return 0;
}

在此函数中

void getValue(CACHE_READ_BLOCK (*ptr)[100])
{
printf("index %dn", ptr[0]->ReadLength);
printf("index %dn", ptr[1]->ReadLength);
}

parameter是指向类型为CCD_ 1的100个元素的阵列的指针。一开始你必须放弃指针。

void getValue(CACHE_READ_BLOCK (*ptr)[100])
{
printf("index %dn", ( *ptr )[0].ReadLength);
printf("index %dn", ( *ptr )[1].ReadLength);
}

按照以下方式声明和定义函数会更简单

void getValue( CACHE_READ_BLOCK *ptr )
{
printf("index %dn", ptr[0].ReadLength);
printf("index %dn", ptr[1].ReadLength);
}

并称之为

getValue( arr );

用作函数参数的数组被隐式转换为指向其第一个元素的指针。

或者,由于数组的元素没有更改,因此参数应该具有限定符const

void getValue( const vCACHE_READ_BLOCK *ptr )
{
printf("index %dn", ptr[0].ReadLength);
printf("index %dn", ptr[1].ReadLength);
}

试试这个:

void getValue(CACHE_READ_BLOCK (*ptr)[100])
{
printf("index %dn", (*ptr)[0].ReadLength);
printf("index %dn", (*ptr)[1].ReadLength);
}
struct cache_read_block
{
unsigned short ReadLength;    // How many words
};
typedef struct cache_read_block CACHE_READ_BLOCK;
void getValue(CACHE_READ_BLOCK *ptr)
{
printf("index %dn", ptr[0].ReadLength);
printf("index %dn", ptr[1].ReadLength);
}
int main(void) {
CACHE_READ_BLOCK arr[100] = {0};
arr[0].ReadLength = 10;
arr[1].ReadLength = 5;
getValue(&arr);
system("pause");
return 0;
}

相关内容

  • 没有找到相关文章

最新更新