学习笔记1:指针
#include <stdio.h>
void main()
{
int a, b;
int *pointer_1, *pointer_2; //定义pointer_1 和pointer_2是指针变量
a = 100;
b = 10;
pointer_1 = &a; //pointer_1指向地址(指针)&a (a是变量,&a是指向a的地址)
pointer_2 = &b;
printf("%d,%d\n", a, b);
printf("%d,%d\n", *pointer_1, *pointer_2);
}
运行结果:
注意:&和*是自右向左运算的
题目:输入a和b两个整数,按先大后小的顺序输出a和b
#include <stdio.h>
void main()
{
int a, b;
int *p1, *p2;
printf("please input two number:");
scanf("%d %d", &a, &b);
p1 = &a;
p2 = &b;
if (a > b)
{
printf("%d,%d", *p1, *p2);
}
else
{
printf("%d,%d", *p2, *p1);
}
}
运行结果:
学习笔记2:数组和指针
题目:假设有一个a数组,整型,有10个元素。输出各元素的值。
答案:
①下标法:
#include <stdio.h>
void main()
{
int a[10];
int i;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
printf("\n");
for (i = 0; i < 10; i++)
{
printf("%d", a[i]);
}
}
②荣国数组名计算数组元素地址,找出元素的值:
#include <stdio.h>
void main()
{
int a[10];
int i;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
printf("\n");
for (i = 0; i < 10; i++)
{
printf("%d", *(a+i)); /*a为首地址,i表示偏移,i=0时,结果就是数组a中的第一个元素的值,i=1时,a增加一个单位,跳到下一个字节,结果是下一个元素值*/
}
}
③指针变量指向数组元素:
#include <stdio.h>
void main()
{
int a[10];
int i;
int *p;
for (i = 0; i < 10; i++)
{
scanf("%d", &a[i]);
}
printf("\n");
for (p = a; p < (a + 10); p++)
{
printf("%d", *p);
}
}
运行结果: