嵌入式培训学习历程第十四天

       指针啊,,----------

  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--------------------------------------------\n");
17     output_num(num);
18 
19     printf("sum = %d.\n", 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("\n");
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 }
shuzu.c

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-------------------------------------------\n");
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("\n");
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 }
find_A_Z.c

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----------------------------------------------\n");
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) != '\0'; i++)
22     {
23         if(' ' == *(delete_ + i)) {
24             continue ;
25         }
26         else { 
27             printf("%c", *(delete_ + i));
28         }
29     }
30     printf("\n");
31 }
delete.c

 

转载于:https://www.cnblogs.com/cxw825873709/p/3233433.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值