代码1:
#include<stdio.h>
void change(int *);
void main()
{
int i=5;
change(&i);
printf("The number has changed to:%d\n",i);
}
void change(int *a)
{
*a=*a+5;
}
Run Code Online (Sandbox Code Playgroud)
代码2:
#include<stdio.h>
#define SIZE 10
struct terms
{
int coeff;
int expo;
};
struct poly
{
struct terms t[SIZE];
int noofterms;
};
void initpoly(struct poly *);
void main()
{
struct poly p1;
initpoly(&p1);
}
void initpoly(struct poly *p)
{
*p->noofterms=0;
}
Run Code Online (Sandbox Code Playgroud)
在code1中,如果我想改变变量的值i,我必须改变,*a=*a+5但是当我在code2中做同样的事情时,它会给出错误.有什么不同?
虽然解引用指针的常用方法是使用解除引用运算符*,但是另一个解除引用运算符->仅适用于structs和unions.它结合了星号和点 - 效果,pointer->field是一样的(*pointer).field.
因此,前面的星号p不再是必需的,因为运算符->已经提供了指针取消引用:
p->noofterms=0;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |