指针啊,,----------
1. 指针 == 地址
注意 : 位域不可以查看地址
2. #define 新类型名 旧类型名
#typedef 旧类型 新类型;
注意 : 可以使用typedef重定义指针名 typedef int* INT32_t INT32_t a, b, c; 正确
3.间接引用 * &
重点 : 0号地址空间不允许访问
4. 指针类型
间接引用时, 向后跳过的字节个数。
指定+-操作时跳过的字节数
5. 指针操作的三个步骤
指针变量的定义
指针有效的初始量
指针通过间接应用操作访问数据
6. 传值 :将变量本身作为参数进行传递
传引用 : 将变量的地址值作为参数进行传递
7.指针作为函数参数,传值还是传引用取决于函数功能
传值 : 形参变,实参不变
传引用 : 形参,实参都变
8.传出参数(做返回值)
(1).参数为指针在函数内部进行间接引用
(2).函数调用前, 该参数指向的空间存储无意义
(3).函数调用结束后,该参数有意义,并且作为函数的传出值返回。
重点 :: 指针作为函数返回值,不能返回局部变量的首地址
char arr[1024]; 地址 ; p = arr = &arr = &arr[0];
今天的英语 : address (地址) variable(变量) pointer(指针)
1.使用指针完成数组元素的存数及数据的反向输出,并求和
1 #include <stdio.h> 2 #include <time.h> 3 4 void input_num(int *); 5 void sum_num(int *, int *); 6 void output_num(int *); 7 8 int main(int argc, char *argv[]) 9 { 10 int num[1024] = {0}; 11 int sum = 0; 12 13 input_num(num); 14 sum_num(num, &sum); 15 16 printf("----------------------------------out-------------------------------------------- "); 17 output_num(num); 18 19 printf("sum = %d. ", sum); 20 return 0; 21 } 22 23 void output_num(int *out) 24 { 25 int i; 26 for(i = 9; i >= 0; i --) 27 { 28 printf("%d ", *(out + i)); 29 } 30 printf(" "); 31 32 return ; 33 } 34 35 void sum_num(int *sum, int *sum_sum) 36 { 37 int i; 38 for(i = 0; i != 10; i ++) 39 { 40 *sum_sum += *(sum + i); 41 } 42 43 return ; 44 } 45 46 void input_num(int *input) 47 { 48 srand(time(NULL)); 49 50 int i; 51 for(i = 0; i != 10; i ++) 52 { 53 *(input + i) = rand() % 100; 54 } 55 56 return ; 57 }
2.生成26个排列好的英文字母
1 #include <stdio.h> 2 #include <time.h> 3 4 void rand_str(char *); 5 void output_str(char *); 6 7 int main(int argc, char *argv[]) 8 { 9 char str[1024] = {0}; 10 11 rand_str(str); 12 printf("---------------------------------------------output------------------------------------------- "); 13 output_str(str); 14 15 return 0; 16 } 17 18 void output_str(char *output) 19 { 20 int i; 21 22 for(i = 0; i != 26; i ++) 23 { 24 printf("%c ", *(output + i)); 25 } 26 printf(" "); 27 28 return ; 29 } 30 31 void rand_str(char *rand_) 32 { 33 srand(time(NULL)); 34 35 int i, number = 0; 36 for(i = 0; i != 26; i ++) 37 { 38 for( ; ; ) 39 { 40 number = rand() % (92 - 65) + 65; 41 if(i == (number - 65)) { 42 *(rand_ + i) = number; 43 break; 44 } 45 } 46 } 47 48 return ; 49 }
3.函数实现:删除字符数组中的空格
1 #include <stdio.h> 2 3 void delete_str(char *); 4 5 int main(int argc, char *argv[]) 6 { 7 char str[1024]; 8 9 printf("Enter character : "); 10 gets(str); 11 12 printf("After delete---------------------------------------------- "); 13 delete_str(str); 14 15 return 0; 16 } 17 18 void delete_str(char *delete_) 19 { 20 int i; 21 for(i = 0; *(delete_ + i) != '