今天又开始了新的篇章,开始学习指针,今天只是初步讲了一下指针的定义和运用:* 这个符号是取地址上的数据,*p是取值,%p是取地址的符号,然后是一些定义 *(&sum)=sum 还有一个(*p)++ 这个在程序中运行结果是它的值加1;*p++ 这个是地址增加 字节增加 比如int 结果是加4 double是加8 *p+n=a[n]这个也是今天的一个重点 另外还有一个初始化的重点 指针变量初始化的方法:int a=10;int *p=&a;
还有今天也讲了变量的问题 定义指针变量的一般形式为:类型*变量名 为了表示指针变量和它所指向的变量之间的关系,在程序中用*符号表示“指向”,例如,i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量。因此,下面两个语句作用相同:i=3;*i_pointer=3;第2个语句的含义是将3赋给指针变量i_pointer所指向的变量。
设有指向整型变量的指针变量p,如要把整型变量 a 的地址赋予p可以有以下两种方式。1) 指针变量初始化的方法:int a=10;int *p=&a; 2) 赋值语句的方法:int a=10;int *p;p=&a;
不允许把一个数字直接赋予指针变量,故下面的赋值是错误的:int *p;p=1000;
指针使用举例:
- #include <stdio.h>
- int main(){
- int a=100, b=10;
- int *pointer_1, *pointer_2;
- pointer_1 = &a;
- pointer_2 = &b;
- printf("%d, %d\n", a, b);
- printf("%d, %d\n", *pointer_1, *pointer_2);
- return 0;
- }
100, 10
100, 10
【示例】输入a和b两个整数,按先大后小的顺序输出。
- #include <stdio.h>
- int main(){
- int *max, *min,*tmp, a, b;
- scanf("%d, %d",&a, &b);
- max = &a;
- min = &b;
- if(*max < *min){
- // 交换指针变量的值,tmp 为临时变量
- tmp = max;
- max = min;
- min = tmp;
- }
- printf("a=%d, b=%d\n", a, b);
- printf("max=%d, min=%d\n", *max, *min);
- return 0;
- }
10, 20↙
a=10, b=20
max=20, min=10