C语言学习日记——指针学习(一)

目录

学习目标:

学习内容:

10.1地址和指针的概念

​编辑

​编辑

10.3指针算法

10.4指针函数

学习练习:

学习产出:


学习目标:

理解指针的定义和初步应用。


学习内容:


10.1地址和指针的概念

 指针是用来装地址的数据类型。

其作用是通过被调函数修改主调函数
10.2指计的定义

C语言学习日记——指针学习(一)_第1张图片

指针的使用:

C语言学习日记——指针学习(一)_第2张图片

10.3指针算法

 1 指针加一 = 原有地址 + sizeof基类型;

 2 & 与 * 可以相互抵消;

 3 不同的基类型指针相减会编译报错

 4 指针之间可以进行减法运算不能做加法运算

 5 *要求操作数必须是指针

10.4指针函数

 函数类型为指针型如:

int *choiceSort

,表示该函数的返回值是一个指向该数据类型的指针。


学习练习:

指针实现数组求和

 18 void sumArray(int *a,int len,int *sum)
 19 {
 20     int i = 0;
 21     for(i = 0; i 

实现结果:

 

指针实现二分查找

89 int *erfen(int *a,int len,int n)
 90 {
 91     int begin = 0;
 92     int end = len -1;
 93     while(begin <= end)
 94     {
 95         int mid = (begin + end) / 2;
 96         if(*(a + mid) == n)
 97         {
 98             return a + mid;
 99         }
100         else if(*(a + mid) > n)
101         {
102             end = mid - 1;
103         }
104         else
105         {
106             begin = mid + 1;
107         }
108     }
109     return NULL;
110 }
111 void or(int *a)
112 {
113     if(a)
114     {
115         printf("Find %d\n",*a);
116     }
117     else
118     {
119         printf("NO Find");
120     }
121 }

 实现结果:

 


学习产出:

使用指针完成选择排序冒泡排序和插入排序

 11 void swap(int *a,int *b)
 12 {
 13     int temp = *a;
 14     *a = *b;
 15     *b = temp;
 16 }
 35 void printfArray(int a[],int len)
 36 {
 37     int i;
 38     for( i = 0; i < 10;++i)
 39     {
 40         printf("%3d",a[i]);
 41     }
 42     printf("\n");
 43 }
 44 
 45 void choiceSort(int *a,int len)
 46 {
 47     int i ,j;
 48     for( i = 0; i < len -1;++i)                                                                                                                                                                                                      
 49     {
 50         for( j = i +1; j < len;++j)
 51         {
 52             if(a[i] > a[j])
 53             {
 54                 swap(a + i,a + j);
 55             }
 56         }
 57     }
 58 }
 59 void bubbleSort(int *a,int len)
 60 {
 61     int i ,j;
 62     for( i = len - 1; i > 0;--i)
 63     {
 64         for( j = 0; j < i;++j)
 65         {
 66             if(a[j] > a[j + 1])
 67             {
 68                 swap(a + j,a + j + 1);
 69             }
 70         }
 71     }
 72 }
 73 void inserSort(int *a,int len)
 74 {
 75     int i ,j;
 76     for( i = 1; i < len;++i)
 77     {
 78         int temp = *(a + i);
 79         j = i - 1;
 80         while(j >= 0 && *(a + j) > temp)
 81         {
 82             *(a + j + 1) = *(a + j);
 83             --j;
 84         }
 85         a[j + 1] = temp;
 86     }
 87 }

主函数部分

122 int main(void)
123 {
124     int max = 0;
125     int min = 0;
126     int i = 1;
127     int a[] = {1,-2,3,4,5,-6,7,8,49,0};
128     int b[] = {1,2,3,4,-5,6,27,8,91,0};
129     int c[] = {1,2,-3,4,5,64,7,8,-9,0};
130     int len = sizeof(a) / sizeof(a[0]);
131     int sum = 0;
132     choiceSort(a,len);
135     printf("选择排序:\n");
136     printfArray(a,len);
137     bubbleSort(b,len);
138     printf("冒泡排序:\n");
139     printfArray(b,len);
140     inserSort(c,len);
141     printf("插入排序:\n");
142     printfArray(c,len);
143 }

输出结果

C语言学习日记——指针学习(一)_第3张图片

你可能感兴趣的:(学习日记,c语言,学习,c语言)