19.12.18

小结一下,,

1.数组

 1 #define  _CRT_SECURE_NO_WARNINGS 1
 2 #include<stdio.h>
 3 #define   size  5
 4 enum   {SIZE=5};
 5   //全局变量在编译前加载到数据域  函数之外定义的变量在数据区
 6   //局部变量在调用时加载到栈区,在函数结束时销毁  函数之内定义的变量在栈区(大小为一兆 1MB)
 7 int main()
 8 {
 9  static const  int n=5;
10  //数组的大小必须是整数  常量 // 常量的来源:  宏定义    #define   size  5
11  // 数组在编译时就要确定大小 //                 枚举类型  enum   {SIZE=5}
12               //                 static const  int n=5;
13  int  a[n]={1,2,3,4,5};      //数组存放是  零下标开始从低地址到高地址存放
14  int  b[size]={1,2,3,4,5};
15  int  c[SIZE]={1,2,3,4,5};
16  //数组名是数组首元素的地址
17  printf("%#p    0x%08x  \n",a,&a[0]);
18  //      %p打印地址  %#p打印0x........   %x 16进制输出    %08x  16进制输出 宽度为8 不足前面补0
19  printf("%d  %d  \n",a[2],*a+2);
20  printf("%d  \n",sizeof(a)/sizeof(a[1]));  //求数组元素个数  sizeof()在编译时就计算出来用数字替代
21  return 0;
22

                    

                  存储模式:

                   大端模式    低地址存低位,高地址存高位
                   小段模式    低地址存高位,高地址存低位

    运行结果:

         

扫描二维码关注公众号,回复: 8235355 查看本文章

 2.指针

 1 #define  _CRT_SECURE_NO_WARNINGS 1
 2 #include<stdio.h>
 3 int main()
 4 {
 5     //  *的作用
 6     int  a = 1 * 2;    //
 7     int  *p = &a;      //声明指针, * 和变量结合
 8     int  b = *p;          //解引用
 9     printf("a>>%d   *p>>%d   b>>%d   p>>%#p   &a>>%#p\n",a,*p,b,p,&a);  //p中存放的是a的地址
10     //类型决定了指针的两个特性:    1.加减整数
11     //                                                 2.解引用
12     int sum = 0x12345678;
13     short *pa=(short *)&sum;
14     printf("*pa>>0x%x   *(pa+1)>>0x%x    \n",*pa,*(pa+1));    //指针加减整数   
15     char *pb=(char *)&sum;
16     printf("(char)*pb>>0x%x   (int)*pa>>0x%x   \n",*pb,*pa);  //指针类型对解引的影响
17     //同类型指针相减结果是个  整数, 相加无意义
18     char *pc=pb+3 ;
19     printf("pb>>0x%08x   pc>>0x%08x   pc-pb>>%d   pb-pc>>%d\n",pb,pc,pc-pb,pb-pc);
20     return 0;
21 }

        运行结果:

            

 3.scanf()

  (1)因为我用的编译器是VS,scanf总会报错说scanf不安全,让使用scanf_s

解决方法:1)在代码最上面加上   #define  _CRT_SECURE_NO_WARNINGS    一定要加在第一行

        2)在属性中关闭SDL检

   

(2)每次接收一个字符,然后输出。第一次输入了“ASD回车”,然后第一次接收了 A,输出 A,但第二、三、四次不会让你输入,自动接收了S、D、回车

   

    解决方法:每次输入前用  fflush(stdin);  清空输入缓冲区

猜你喜欢

转载自www.cnblogs.com/L1035026268/p/12064516.html