【发布时间】:2013-10-02 15:26:59
【问题描述】:
我目前正在学习c语言,我碰到了这段代码。 ptr 已经是指针类型的变量,那么& 操作符对它有什么影响,因为我知道通常操作符是用来获取非指针变量的地址的。
struct name {
int a; float b; char c[30];
};
int main()
{
struct name *ptr;
int i,n;
printf("Enter n: ");
scanf("%d",&n);
ptr = (struct name*)malloc(n*sizeof(struct name));
/* Above statement allocates the memory for n structures with pointer ptr pointing to base address */
for(i=0; i<n; ++i) {
printf("Enter string, integer and floating number respectively:\n");
scanf("%s%d%f", &(ptr+i)->c, &(ptr+i)->a, &(ptr+i)->b);
}
}
【问题讨论】:
-
@P0W:抛开编码风格和坏习惯不谈,这似乎是完全有效的 C++。
-
@JohnDibling 我偶尔会设法从问题中编译 C 方法,而无需使用 Java 进行修改,但这并不意味着这些问题应该同时使用 Java 和 C 进行标记。以类似的方式,问题应该' t 用 C 和 C++ 标记。 C++ 标签通常会导致特定于 C++ 的建议,这对 OP 没有帮助。
-
@Dukeling:也许吧,但 OP 用两种语言标记它是有原因的。也许不是一个很好的理由,而是一个理由。除了在 OP 中提到“c”之外,这里没有任何内容表明所讨论的语言不能是 C++。提问者需要澄清。