学C语言“指针”少不了,史上最全关于指针程序,让你精通指针!

指针

这里是笔者花费数日编写的初学者认识指针的程序免费粘贴,拿去试试吧
不多说了,上车吧!开启你的学习之路!
指针走起

在这里插入代码片
``
#include<iostream>           
#include<string.h>
using namespace std;
int a,b,*p=NULL;
int *p1=&a,*p2=&b;
void yi();//-------------指针自加 
void er();//-------------指针运算 
void sa();//-------------指针指向转换 
void si();//-------------指针递推 
void zifu1();//----------指针输入输出 
void zifu2(); //---------指向数组的指针 
void zifu3();//---------- 计算长度 
void zifu4();//---------- 指针转换赋值 
void shuzu1(); //--------矩阵输出 
void hangzhizhen();//----加和 
void zifushuzu();//------排序 
void twzhizhen();//------二阶指针
void zhi_han(); //----------------指针与函数 (求函数最大值)
float max_array(float *a, int n);//所需函数 
int main()
{
 //cin>>a>>b;
 //yi();
 //er();
 //sa();
 //si();
 //zifu2();
 //zifu3();
 //zifu4();
 //shuzu1();
 //hangzhizhen(); 
 //zifushuzu();
 //twzhizhen();
 zhi_han();
}
void san()
{
 if(a<b)
 {
  p=p1;                //指针的指向变了,而a,b的值不变
  p1=p2;
  p2=p; 
  } 
 cout<<"a="<<a<<" b="<<b<<endl;
 cout<<"&a="<<&a<<" &b="<<&b<<"\n";
 cout<<"p1="<<*p1<<" p2="<<*p2<<endl;
}
void yi()
{
 (*p1)++;
 *p2++;      //作用一样 
 cout<<"a="<<a<<" b="<<b<<endl;
 cout<<"&a="<<&a<<" &b="<<&b<<"\n";
 cout<<"p1="<<*p1<<" p2="<<*p2<<endl;
}
void er()
{
 *p1=a+2;
 *p2+=2; //作用相同 
 cout<<"a="<<a<<" b="<<b<<endl;
 cout<<"&a="<<&a<<" &b="<<&b<<"\n";
 cout<<"p1="<<*p1<<" p2="<<*p2<<endl;
}
void si()
{
 p1+=1;  //指针指向下一位 
 cout<<"a="<<a<<" b="<<b<<endl;
 cout<<"&a="<<&a<<" &b="<<&b<<"\n";
 cout<<"p1="<<*p1<<" p2="<<*p2<<endl;
}
void shu1()
{
 int x[3],i;
 for(i=0;i<3;i++)
 {
  //cin>>x+i;  //cin不可用 
  scanf("%d",x+i);
  //cout<<*(x+i);
  printf("%d ",*(x+i));
  } 
 } 
void shu2()
{
 int x[3],i;
 int *y=x; 
 for(i=0;i<3;i++)
 {
  scanf("%d",y);
  printf("%d ",*y);
  y++;       //指针自动指向下一个 
  } 
 }
void zifu3()
{
 char *s="China";           //注意字符串指针的定义 
 int len =0;
 printf("字符串是\"%s\"",s);//注意输出 
 while(*s!='\0')
 {
  len++;
  s++;
 }
 printf("的长度是%d\n",len); 
}
void zifu4()
{
 char *s="China";
 s="Beijing";     //指针可以多次赋值 ,字符数组不行 
 char str[]="China";
 *str='A';           //字符数组可改变数组元素,指针不可以 
 printf("指针是\"%s\"\n",s);
 printf("字符数组是\"%s\"\n",str);
}
void shuzu1()
{
 int num,max=0;
 int a[11][11];
 int *p;
 scanf("%d",&num);
 printf("%d",num);
 for(int i=0;i<num;i++)         //输入的操作,
 {
  for(p=a[i];p<&a[i][num];p++)
   scanf("%d",p);         //不写指针符 
 }
 printf("方阵是;\n");
 for(int i=0;i<num;i++)            
 {
  for(p=a[i];p<&a[i][num];p++)
  {
   printf("%3d",*p);       //必写指针符 
   if(max<*p) max=*p;
  }
  printf("\n");
   
 }
 printf("max=%d\n",max);
}
void hangzhizhen()
{
 int b[2][3]={{1,2,3},
     {4,5,6}};
 int sum;
 int (*q)[3]=b; //--------------------------行指针定义 
 for(int i=0;i<2;i++)
 {
  sum=0;
  printf("第%d行(",i+1);
  for(int j=0;j<3;j++)
  {
   printf(" %d",*(*q+j));//------------输出指针字符 
   sum+=*(*q+j);//---------------------运算指针 
  }
  printf(")的行和是;%d\n",sum);
  q++;
 }
 
} 
void zifushuzu()
{
 char *name[]={"Follow me","Come on","My pleasure","Interesting","Morning"};
 char *temp;
 int k;
 for(int i=0;i<4;i++)
 {
  k=i;
  for(int j=i+1;j<5;j++)
   if(strcmp(name[k],name[j])>0) k=j;
  if(k!=i)
  {
   temp=name[k];
   name[k]=name[i];
   name[i]=temp;
   } 
   
 } 
 for(int i=0;i<=5;i++)
  printf("%s\n",name[i]);
} 
void twzhizhen()
{
 char *name[]={"Follow me","Come on","My pleasure","Interesting","Morning",};
 char ** two=name;
 int i,j,k;
 while(*two)
 {
  for(i=0;*(*two+i);i++)
   printf("%c",*(*two+i));
  printf("\n");
  two++;
  } 
 } 
void zhi_han()
{
 //printf("请输入%d个实数:\n",&N)
 int i;
 float array[10],max;
 for(i=0;i<10; i++)
  scanf("%f",&array[i]);
 max=max_array(array,10);//------------------/*函数调用*/
 printf("数组中最大元素是:%.2f\n",max);
}
float max_array(float *a, int n)//---------大函数定义*/
{
 int i; 
 float max;
 max=*a;
 for(i=1; i<n; i++)
  if(*(a+i)>max) max=*(a+i);
 return max;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值