都说指针是指向变量的 内存地址, 这个都知道, 看下面
但使用时, 总感觉头懵, 下面, 开始我的表演:
先看整体代码:
#include <stdio.h>
int main(){
int a;
printf("请输入整数a: ");
scanf("%d", &a);
int *b = &a;
if (*b % 2){
printf("%d是奇数", *b);
}else{
printf("%d是偶数", *b);
}
return 0;
}
然后对代码进行分解,主要是main函数中的内容, 如下:
int main(){
这一行定义了程序的主函数main
。C程序的执行从main
函数开始。
int a;
这里声明了一个整型变量a
,用于存储用户输入的整数。
printf("\n请输入a: ");
这一行调用printf
函数,在屏幕上打印出提示信息,让用户输入一个整数。
scanf("%d", &a);
scanf函数用于从标准输入(通常是键盘)读取数据。这里,它读取一个整数,并将其存储在变量
a的地址处。
%d是格式说明符,表示要读取的是一个整数。
&a是变量
a`的地址。
int *b = &a;
这里声明了一个整型指针b
,并将其初始化为变量a
的地址。现在,b
指向变量a
。
if (*b % 2) {
这里使用了一个if
语句来判断变量a
的值是奇数还是偶数。*b
是解引用操作,它获取指针b
所指向的值,即变量a
的值。% 2
是取模操作,它返回a
除以2的余数。如果a
是奇数,a % 2
的结果是非零值(在C语言中,非零值被视为true
),如果a
是偶数,a % 2
的结果是0(在C语言中,0被视为false
)。
printf("%d 是奇数", *b);
如果a
是奇数(即*b % 2
的结果是非零值),则执行这一行,打印出相应的信息。
}else{
printf("%d 是偶数", *b);
};
如果a
是偶数(即*b % 2
的结果是0),则执行这个else
块,打印出相应的信息。注意,末尾的分号;
是不必要的,因为它已经包含在else
块的末尾了。
return 0;
}
最后,main
函数返回0,表示程序正常结束。
从上往下看, 尤其是"int *b = &a; if (*b % 2) ",看明白了, 那么指针你就了解的差不多了