zoukankan      html  css  js  c++  java
  • C语言入门:指针的概要

     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()
     4 {
     5     //指针
     6     //什么是指针  一个变量的地址 就是该变量的指针 
     7     // 咱们学习的C语言里把  地址 叫做指针
     8     //如果想访问地址 需要用什么方法, 那只能用指针 这种方法。
     9     int a;
    10     a=5;
    11     //scanf("%d",&a);
    12     printf("a=%d 是数字:
    ",a);
    13     printf("a=%d 这一串数字 就是地址编码",&a);//属于 指针的一种 & 就是指针的一种运算符 小方法
    14 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()
     4 {
     5     //指针怎么定义。
     6     int a;//类型说明符  变量名。
     7     //指针想指向 一个变量的地址 的时候, 需要和这个变量的类型  想匹配。
     8     int *p;//指针类型说明符  * 指针变量名    point(指针的意思)
     9     //如何使用指针, 怎么使用指针。 
    10     //1.先给普通变量一个值。
    11     printf("请输入一个数:");
    12     scanf("%d",&a);//输入一个数字
    13     //2.通过 指针变量  指向 该变量的地址。
    14     p=&a;//指针 只能  指向地址。
    15       //1638212     1638216
    16       //  100      
    17       //++     --   指针变量 可以通过这两个  单目运算符  进行 地址 移动 
    18       //   ++3
    19       //   ++a    //单目 ++,--  只能和变量一起 使用。 如果和常量 就报错(语法错误)。
    20       //指针是变量 不是常量
    21     //1.直接输出的方法、
    22     printf("直接方法:a=%d
    ",a);
    23     //2.间接输出的方法 (指针)
    24     printf("间接方法:a=%d
    ",p);//加 * 可以直接 取出地址里面 数值。
    25 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()
     4 {
     5     //指针偏移 用什么符号,偏移的时候 每一偏移多大空间,用什么来确定。
     6     //偏移用++,-- 。   int *p;  ++p,p++,--p,p--  先减或后减  和之前规则 一样。
     7     int  a,*p;//定义一个普通变量,和一个指针变量
     8     //int *p=&a;叫指针的初始化赋值。
     9     printf("请输入一个数:");
    10     scanf("%d",&a);
    11     //指针 指向变量   建立关系
    12     p=&a;
    13     //通过 直接 或间接的 方法(指针) 输出 a的 值 和地址。
    14     printf("直接的方法:a=%d,直接的方法 输出地址:%d
    ",a,&a);
    15     printf("间接的方法:a=%d,间接的方法 输出地址:%d
    ",*p,p); 
    16     //偏移的时候 每一偏移多大空间,用什么来确定。一个类型的大小。 
    17     //int float double  char   它们的字节 分别占多少,那么指针偏移的时候,就偏移多少
    18     //4    4     8        1
    19     //验证一下
    20      ++p;//只对指针进行了 偏移。
    21     //通过指针偏移之后  直接 或间接的 方法(指针) 输出 a的 值 和地址。
    22     printf(" 指针偏移之后  直接的方法:a=%d,直接的方法 输出地址:%d
    ",a,&a);
    23     printf(" 指针偏移之后  间接的方法:a=%d,间接的方法 输出地址:%d
    ",*p,p);  
    24 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()
     4 {
     5     //多个空间偏移的时候 是不是 用 循环。(数组)
     6     int  b[5],i;//一个连续存储的空间。数组名是数组的首地址。 +长度
     7     int *p;//指针变量
     8     p=b;//指针变量 指向 数组的首地址 即可。
     9     p=&b[0];//第一个元素的地址 就是首地址。
    10     //给数组进行输入
    11     for(i=0;i<5;i++)
    12     {
    13         printf("请输入一个数:");
    14         scanf("%d",&b[i]);
    15     }
    16     //输出数组中的值。  1.直接用数组输出    2. 间接用指针输出//下标法。
    17     printf("1.直接用数组输出
    ");
    18     for(i=0;i<5;i++)
    19     {
    20          printf("%d ",b[i]);
    21     }
    22     
    23     printf("
    2. 间接用指针输出
    ");
    24     for(i=0;i<5;i++)  //p=b
    25     {
    26          printf("%d ",p[i]);
    27     }
    28       printf("
    --------------------------
    ");//指针法。
    29     for(i=0;i<5;i++)
    30     {
    31          printf("%d ", *(p+i));    ///  *p 普通变量 和指针变量    p=&b[0]
    32     }               // *(&b[0]+i);先移动位置,在通过* 取移动之后的位置。
    33     
    34     printf("
    指针法
    ");
    35      for(i=0;i<5;i++)
    36     {
    37          printf("%d ",(*p)++);//(* &b[0])++  
    38     }
    39   
    40 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()
     4 {
     5     //利用指针中间变量 求2个数的交换。 
     6     int a,b,t;
     7     int *p,*p1;
     8     printf("请输入a的值:");
     9     scanf("%d",&a);
    10     printf("请输入b的值:");
    11     scanf("%d",&b);
    12     p=&a;
    13     // t=a;
    14     // a=b;
    15     // b=t;
    16     //1.
    17     //*p=a;
    18     //a=b;
    19     //b=*p;
    20     //printf("a=%d,b=%d
    ",a,b);
    21     p1=&b;
    22     t=*p;//  t=a
    23     *p=*p1;// a=b
    24     *p1=t;// b=t;
    25     printf("a=%d,b=%d
    ",a,b);
    26    
    27     
    28 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()
     4 {
     5      //利用指针求 1-n的和  /   1-n的阶乘
     6      int i,n;
     7      int sum=1,*p;
     8      //1.非指针的情况
     9      printf("请输入一个数:");
    10      scanf("%d",&n);
    11      p=&sum;
    12      for(i=1;i<=n;i++)
    13      {
    14           *p=*p*i;
    15      }
    16      printf("和为:%d",*p); 
    17 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void sum(int *p,int *p1)//在子函数中 利用指针 来求2个数的和 
     4 {
     5     printf("传参后:a+b=%d
    ",*p+*p1);
     6 }
     7 void change(int *p,int *p1) //在子函数中 利用指针 来求 2个数的交换
     8 {
     9     int t;                     
    10     t=*p;
    11     *p=*p1;
    12     *p1=t;                    
    13     printf(" 两个数交换:a=%d,b=%d
    ",*p,*p1); 
    14 }
    15 
    16 void jc(int n,int *p)//在子函数中 利用指针 来求  1-n的阶乘/和
    17 {
    18     int i;//循环变量
    19     for(i=1;i<=n;i++)
    20     {
    21         *p=*p*i;
    22     }
    23     printf("指针求和为:%d",*p);
    24 }
    25 void main()//利用传参 来做。
    26 {
    27     int a,b,n,su=1;
    28     printf("请输入a的值:");
    29     scanf("%d",&a);
    30     printf("请输入b的值:");
    31     scanf("%d",&b);
    32     sum(&a,&b);
    33     
    34     change(&a,&b);
    35     
    36     printf("请输入一个数:n-->");
    37     scanf("%d",&n);
    38     jc(n,&su);
    39 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"
     3 void main()//利用指针 求出数组 奇数  偶数
     4 {
     5     int a[5];//数组
     6     int i,*p;//指针变量
     7     
     8     for(i=0;i<5;i++)
     9     {
    10          printf("请输入一个数:");
    11          scanf("%d",&a[i]);
    12     }
    13     p=a;
    14     for(i=0;i<5;i++)
    15     {
    16         if(a[i]%2==0)
    17         {
    18              printf("%d为偶数,
    ",a[i]);
    19         }
    20         else
    21         {
    22             printf("%d为奇数,
    ",a[i]);
    23         }
    24     }
    25     //直接拿 指针变量 替换掉 数组名。
    26     printf("
    直接拿 指针变量 替换掉 数组名。
    ");
    27     for(i=0;i<5;i++)
    28     {
    29         if(p[i]%2==0)
    30         {
    31              printf("%d为偶数,
    ",p[i]);
    32         }
    33         else
    34         {
    35             printf("%d为奇数,
    ",p[i]);
    36         }
    37     }
    38     //指针 
    39     printf("
    ");
    40     for(i=0;i<5;i++)
    41     {
    42         if(((*p)+i)%2==0)
    43         {
    44              printf("%d为偶数,
    ",(*p)+i);
    45         }
    46         else
    47         {
    48             printf("%d为奇数,
    ",(*p)+i);
    49         }
    50     }
    51     
    52     // printf("
    ");
    53     //for(i=0;i<5;i++)
    54     //{
    55     //    if(((*p)++)%2==0)
    56     //    {
    57     //         printf("%d为偶数,
    ",(*p)++);
    58     //    }
    59     //    else
    60     //    {
    61     //        printf("%d为奇数,
    ",(*p)++);
    62     //    }
    63     //}
    64     
    65 }
     1 /* Note:Your choice is C IDE */
     2 #include "stdio.h"//传参的大致 规则,  主函数 输入数据  传参给子函数  子函数进行 数据处理
     3 float avg(int *p,int len)//len代表数组的长度  ② 指针变量指向数组初始化相关变量
     4 {
     5 //⑦ 自定义函数实现求10名学生成绩的平均值,将平均值返回
     6 //⑧ 计算成绩总和
     7 //⑨ 计算平均值
     8 //⑩ 返回平均值
     9     int  i,sum=0;//循环变量  下标
    10     for(i=0;i<len;i++)
    11     {
    12         sum=sum+(*(p+i));//④ 要求使用指针法引用到数组元素
    13     }
    14     return (float)sum/len; //float
    15 }
    16 void main()
    17 {
    18 //调用函数求10名学生成绩的平均值,将平均值返回给主函数并输出。
    19 //要求:使用数组和指针变量,调用函数实现功能
    20 //注:无效果,不得分
    21 //① 正确定义变量、数组和指针变量
    22   int a[10];
    23   int i;
    24   float pj;
    25   for(i=0;i<10;i++) //③ 在主函数中输入10名学生的成绩
    26   {
    27        printf("请输入一个数;");
    28        scanf("%d",&a[i]);
    29   }
    30   pj= avg(a,10);//数组 传递的时候,  只需要 传递 数组名  和长度。  ⑤ 正确调用函数,传递数组,并将平均成绩返回
    31   printf("平均分为:%.2f
    ",pj);//⑥ 在主函数中正确输出平均成绩
    32 }
  • 相关阅读:
    windows下rabbitmq 延迟插件安装
    java实现生产者和消费者 类比消息中间件
    missing go.sum entry for module providing package <package_name>
    python匹配字符串中某个词的开始位置和结束位置
    Linux中使用Docker安装MongoDB
    pypy下载和安装
    linux配置环境变量
    python替换字符串指定位置上的元素
    Flink:状态管理
    Flink:时间和水位线
  • 原文地址:https://www.cnblogs.com/ZJ-CN/p/12269900.html
Copyright © 2011-2022 走看看