如何增加结构中定义的指针的地址?我在main函数中定义了一个指向结构的指针。如果我使用ptr->element
,其中element是结构中的指针,它是指元素指向的值吗?如果是,如何使元素指向下一个位置?
答案 0 :(得分:0)
它是特定于实现的,但实际上规则是:
Struct成员按其声明的顺序存储。
如有必要,在每个结构成员之前添加padding
,以确保正确的对齐。
sizeof(Ntype)
字节的对齐。< / p>
所以,给定以下结构:
struct Ntype
{
char ch1;
short sh;
char ch2;
int *a;
};
所以sizeof(Ntype)
是16。
答案 1 :(得分:0)
要增加char*
成员的地址,您可以执行以下操作:
//assuming that CB_t is already allocated.
char *temp = CB_t->buffptr;
//now you can increment temp as so
char myChar = *temp;
temp++;
char nextChar = *temp;
temp++;//and so on. You can also put it in a loop, where you end condition would be encountering a '\0' character.
不要这样做:CB_t->buffptr++
因为它会破坏你的结构!如果你这样做,那么buffptr
将修剪成员中的前导字符。
你也可以这样做:
char firstChar = *CB_t->buffptr;
char secondChar = *(CB_t->buffptr + 1);
char thirdChar = *(CB_t->buffptr + 2);//and so on
我建议你阅读有关指针算法的this讨论。包裹你的脑袋可能是一个艰难的概念,但一旦你做到了,你就会拥有一把非常强大的武器!