学习目标:
学习内容:
10.1地址和指针的概念
编辑
编辑
10.3指针算法
10.4指针函数
学习练习:
学习产出:
理解指针的定义和初步应用。
指针是用来装地址的数据类型。
其作用是通过被调函数修改主调函数
10.2指计的定义
指针的使用:
1 指针加一 = 原有地址 + sizeof基类型;
2 & 与 * 可以相互抵消;
3 不同的基类型指针相减会编译报错
4 指针之间可以进行减法运算不能做加法运算
5 *要求操作数必须是指针
函数类型为指针型如:
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 }
输出结果