一、初识指针的概念
在C语言中,指针是一种变量,它存储的是另一个变量的内存地址。
就好像你有很多信箱(变量),每个信箱都有一个编号(内存地址)。指针就是一个小纸条,上面写着某个信箱的编号,通过这个编号就能找到对应的信箱。
例如,有一个变量 int a = 10; ,可以定义一个指针变量 int *p; ,然后通过 p = &a; 让指针 p 指向变量 a 。这里 &a 就是获取变量 a 的内存地址。 *p 用于访问指针所指向的变量的值,所以 *p 的值就是10。
例1.1
int main()
{
int a,b,c;
// 正确使用scanf读取输入
scanf("%d,%d",&a,&b);
// 使用%d正确输出变量地址
printf("a的地址=%d,b的地址=%d\n",&a,&b);
// 正确输出变量c的地址
printf("c的地址=%d\n",&c);
c = a + b;
printf("c = %d\n",c);
return 0;
}
如11.1所示,第4行,输入变量a和b时需要使用&取变量的地址,从而把变量值输入到变量名对应的存储单元中。第5行用printf( )函数输出变量a和b的地址。第8行输出变量c的地址。存储单元地址指明变量临时占用内存单元的位置,形象地称为指针,存放地址的值称为指针变量。指针指向变量的数据类型就是该指针的类型。指针的值是其指向的内存单元的地址,是数值型数据。
二、指针的初步应用
例题2.1
编程将数组中的数据逆序存放,要求:用指向数组的指针变量实现。
定义数组 int a[10];十个元素,整型
答案:
#include <stdio.h>
void sort(int *, int);
int main( )
{
int a[10],i,*p;
for(i=0;i<10;i++){
scanf("%d", &a[i]);
}
p=a;
sort(p,10);
for(i=0;i<10;i++){
printf("%d,",a[i]);
}
return 0;
}
void sort( int *p, int n )
{
int i,j,temp;
for(i=0;i<n/2;i++){
temp=*(p+9-i);
*(p+9-i)=*(p+i);
*(p+i)=temp;
}
}
20分
5. (程序题)
例2.2
*用指向数组指针的方法对 10 个整数排序并由大到小输出。要求单独写一个排序函数。各个整数在主函数中输入,最后在主函数中输出。
答案:
#include <stdio.h>
void sort(int *, int);
int main( )
{
int a[10],i,*p;
for(i=0;i<10;i++){
scanf("%d", &a[i]);
}
p=a ;
sort(p,10);
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
void sort( int *b, int n )
{
int i,temp,*p;
for(i=0;i<n-1;i++){
for(p=b;p<b+n-i-1;p++){
if(*p<*(p+1))
{
temp=*p;
*p=*(p+1);
*(p+1)=temp;
}
}
}
}
标签:10,变量,指向,int,作业,初步,地址,指针
From: https://blog.csdn.net/2401_88607462/article/details/144596082