菜单

金沙国际11-C语言指针

2019年7月4日 - 金沙编程资讯

int i = 0;

练习:

二、指针与数组

2 保存指针的变量,就叫指针变量,(保存地址)

int * p;  int* p;  int *p;//这几种写法都行

作业:

3)在键盘上输入三个秒数,使用函数求时分秒,在main函数中输出结果。

7 值传递:相当于不一致变量,指向差别区域

地点传递:约等于一致变量,指向同一区域

指南针也能够做为再次来到值,但决不回来机关变量。因为有的变量的生命周期,当函数截止,局地变量会被活动清除。

归来顶上部分


4 每种指针变量能指向一种特定类型的靶子。

一、指针

数组占用空间 = 数组成分占用空间*长度

1)有多个数i = 2,j =
3使用函数沟通四个数的值,在轮换函数中查看i和j的值,在main函数查看沟通后的值。

一、指针

2)从键盘上输入5个数,使用八个函数求5个数中最大值、最小值,注意函数未有重临值。

2)使用函数沟通八个值,在main函数中输出结果。

5
指针是援引数据类型,因为本身未有保留最后数额,只是保存了数量的地址,直接的找到内部存款和储蓄器中的数据。

数组是不得以修改其值,指针能够频仍赋值。

p:指针的值          &i:取i的地点

二、指针与数组

3 声雅培(Abbott)个指针变量

#include <stdio.h>    //指针的基本使用  void test(){      int i = 10;      //声明指针      int* p;      //int * p2;      //int *p3;      //赋值      p = &i;      //取值      printf("i val: %d\n",i);      printf("i address: %p\n",&i);      printf("p val: %d\n",*p);//*p指针指向的值      printf("p address: %p\n",p);//p是指针的值  }    //指针可用于参数,传递变量的地址;  void test2(int* p){      printf("p->val:%d\n",*p);      *p = 20;      printf("p->val:%d\n",*p);  }    //练习:1)有两个数i = 2,j = 3使用函数调换两个数的值,在调换函数中查看i和j的值,在main函数查看调换后的值。  void test3(int* p1,int* p2){      printf("p1->%d,p2->%d\n",*p1,*p2);      int temp = 0;      temp = *p1;      *p1 = *p2;      *p2 = temp;      printf("p1->%d,p2->%d\n",*p1,*p2);  }    //2)从键盘上输入5个数,使用一个函数求5个数中最大值、最小值,注意函数没有返回值。  void test4(int size,int array[],int* maxp,int* minp){      for (int i = 0; i < size; i++) {          if (array[i] > *maxp) {              *maxp = array[i];          }          if (array[i] < *minp) {              *minp = array[i];          }      }  }    //指针也可以做为返回值,但不要返回自动变量(局部变量)。因为局部变量的生命周期,当函数结束,局部变量会被自动清除。解决方案,增长生命周期。  int* test5(){      static int i = 10;      int* p = &i;      return p;  }    //指针支持加整数、减整数  void test6(){      int array[5] = {9,2,3,4,5};      printf("array address:%p\n",array);      int* p = array;      printf("p address:%p\n",p);      printf("p->val:%d\n\n",*p);      //指针+1 地址+4      printf("p+1 address:%p\n",p+1);      printf("p+1->val:%d\n",*(p+1));      //      printf("\n*(p+1)->val:%d\n",*(p+1));      printf("(*p)+1->val:%d\n\n",(*p)+1);      //遍历数组      for (int i = 0; i < 5; i++) {          printf("p+%d->val:%d\n",i,*(p+i));          printf("array[%d]:%d\n",i,array[i]);          printf("array+%d:%d\n\n",i,*(array+i));      }      //存储空间      printf("array size:%ld\n",sizeof(array));      printf("p size:%ld\n",sizeof(p));      //赋值      int array2[6] = {0};      int* p2 = array2;      printf("\np address:%p\n",p);      p = p2;      printf("p address:%p\n",p);        }  int main(int argc, const char * argv[])  {      test6();        //    int* p = test5();  //    printf("p:%p\n",p);  //    printf("p->val:%d\n",*p);        //    test();        //    int i = 10;  //    int* p = &i;  //    printf("i val:%d\n",i);  //    test2(p);  //    printf("i val:%d\n",i);              //    int i = 2;  //    int j = 3;  //    int* p1 = &i;  //    int* p2 = &j;  //    printf("i:%d,j:%d\n",i,j);  //    test3(p1,p2);  //    printf("i:%d,j:%d\n",i,j);        //    int num[5] = {0};  //    int max = 0,min = 100;  //    for (int i = 0; i < 5; i++) {  //        printf("输入第%d个数:\n",i);  //        scanf("%d",&num[i]);  //    }  //    test4(5,num,&max,&min);  //    printf("max:%d\n",max);  //    printf("min:%d\n",min);      return 0;  }

6 指南针的用法

1 占用空间

3)指针扶助加整数、减整数、指针的相比较和相减,但运算的单位由指针的花色决定。

指南针占用空间 = 在陆13个人系统下,固定8个字节,与指针类型毫不相关。

2 赋值

 1 #include <stdio.h>   2 /*   3  1)在键盘上输入5个数,求和差积商,使用函数解决,没有返回值,在main函数中输出结果。   4  */   5 void test1(int length,int num[],int* sum,int* cha,int* ji,int* shang){   6     for (int i = 0; i < length; i++) {   7         *sum += num[i];   8         *cha -= num[i];   9         *ji *= num[i];  10         *shang /= num[i];  11     }  12 }  13 /*  14  2)使用函数交换两个值,在main函数中输出结果。  15  */  16 void test2(int* p1,int* p2){  17     int temp = 0;  18     temp = *p1;  19     *p1 = *p2;  20     *p2 = temp;  21 }  22 /*  23  3)在键盘上输入一个秒数,使用函数求时分秒,在main函数中输出结果。  24  */  25 void test3(int miaoshu,int* h,int* minute,int* miao){  26     *h = miaoshu / 3600;  27     *minute = miaoshu % 3600 / 60;  28     *miao = miaoshu % 60;  29 }  30 /*  31  4)在键盘上输入5个数,使用函数返回最大值,返回值的类型为指针类型。  32  */  33 int* test4(int length,int num[]){  34     static int max = 0;  35     int* p = &max;  36     for (int i = 0; i < length; i++) {  37         if (num[i] > max) {  38             *p = num[i];  39         }  40     }  41     return p;  42 }  43 int main(int argc, const char * argv[])  44 {  45     int num[5];  46     for (int i =0; i < 5; i++) {  47         printf("输入第%d个数:",i+1);  48         scanf("%d",&num[i]);  49     }  50     int* p1 = test4(5,num);  51     printf("最大值:%d\n",*p1);  52       53 //    int miaoshu,hour,minute,miao;  54 //    printf("输入秒数:");  55 //    scanf("%d",&miaoshu);  56 //    test3(miaoshu,&hour,&minute,&miao);  57 //    printf("%d时%d分%d秒\n",hour,minute,miao);  58       59 //    int i = 2;  60 //    int j = 3;  61 //    test2(&i,&j);  62 //    printf("i:%d,j:%d\n",i,j);  63       64 //    int num[5];  65 //    int sum = 0,cha = 0,ji = 1,shang = 1;  66 //    int length = 5;  67 //    for (int i =0; i < 5; i++) {  68 //        printf("输入第%d个数:",i+1);  69 //        scanf("%d",&num[i]);  70 //    }  71 //    test1(length,num,&sum,&cha,&ji,&shang);  72 //    printf("和:%d\n",sum);  73 //    printf("差:%d\n",cha);  74 //    printf("积:%d\n",ji);  75 //    printf("商:%d\n",shang);  76     return 0;  77 }

*p:指针指向的值     i:变量名

1 内部存款和储蓄器被分为字节,各种字节有唯一地址,指针保存的是内部存款和储蓄器中的地点。

1)在键盘上输入5个数,求和差积商,使用函数消除,未有重返值,在main函数中输出结果。

目录:

4)在键盘上输入5个数,使用函数再次来到最大值,再次回到值的档案的次序为指针类型。

int* p;//声澳优个指南针变量 int*指针类型

指南针可用以参数,传递变量的地方,相当于多少个函数分享内部存款和储蓄器地址(内存空间)。

归来顶端

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图