指针相关习题答案

指针和一维数组:
指针一维数组正序输入逆序输出
#include<stdio.h>
int main()
{
int a[10];
int *p=a;
for(;p<a+10;p++){
scanf("%d",p);
}
p--; //输入时p加到了p+10,相当于a[10],所以p-- 
for(;p>=a;p--){
printf("%d  ",*p);
}
return 0;
 } 
用指针将数组中每个值加一并输出
#include<stdio.h>
int main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int *p=a;
for(p=a;p<a+10;p++){
*p=*p+1;
printf("%d ",*p);
}
return 0;
}
指针和二维数组
1.自建一个二维数组,输出其中的值
#include<stdio.h>
int main() {
int a[2][3]={{1,2,3},{4,5,6}};
int (*p)[3]=a;
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
printf("%d ",*(*(p+i)+j));
}
printf("\n");
}
return 0;
}
指针和字符串
#include<stdio.h>
#include<string.h>
int main()
{
char a[100],b[100],c[100];
gets(a);
gets(b);
/*
//1.利用数组的下标直接连接 
for(int i=0;i<strlen(b);i++){
a[strlen(b)+i]=b[i];
}
puts(a);*/
/*
//2.利用指针的移动连接 
char *p1=a;
char *p2=b;
char *p3=c;
for(int i=0;i<strlen(a);i++){
*(p3++)=*(p1++);
}
for(int j=0;j<strlen(b);j++){
*(p3++)=*(p2++);
}
puts(c);
*/
//3.拼接到一字符数组中 
char *p4=&a[strlen(a)];
char *p5=b;
for(int i=0;i<strlen(b);i++){
*(p4++)=*(p5++);
}
puts(a);
}
 
 
 
 
 

发布者:胡栗涛   点击数:537   发布时间:2018-10-30   更新时间:2018-10-31