生产实习3

学习日记   姓名:王宁捷 日期:6.22
今日学习任务:

C语言基础与提高(1.一维数组 2.二维数组 3.字符数组 4.函数 5.预处理)


今日任务完成情况:

#include <stdio.h>

main()
{   int a[3][4]={{1,2,3,4},{3,4,5,6},{5,6,7,8}};
    int i;
    int (*1p)[4]=a,*q=a[0];
    for(i=0;i<3;i++)
    {   
        if(i==0)
            (*p)[i+i/2]=*q+1;
        else
            p++,++q;
    }
    for(i=0;i<3;i++)
    {
        printf("%d,",a[i][i]);
    }
    printf("%d,%d\n",*((int *)p),*q);
}

1.一维数组,二维数组如何定义,初始化?如何在程序中赋值?

如:int a[]={1,2,3,};

int b[2][3]={4,5,6,7,};

2.字符数组如何定义,初始化,如何程序中赋值?

如:char a[5]={'H','E','L','L','O',};

3.字符串常见函数的使用,不用函数如何实现字符串的复制,字符串长度的实现?

如果不用函数,可把字符串里的字符一个一个分别赋值给另一个数组来实现复制。

4.函数的构造有哪些?入参,返回值如何在函数中体现?形参,实参是如何传递数据?

 函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值。

5.值传递,地址传递是怎么回事?如何实现在子函数中数值交换后在主函数中能实现?

值传递方式方式:
  函数调用时,为形参分配单元,并将实参的值复制到形参中;
  调用结束,形参单元被释放,实参单元仍保留并维持原值;
特点:

形参与实参占用不同的内存单元;  单向传递

地址传递方式:
函数调用时,将数据的存储地址作为参数传递给形参
特点:
形参与实参占用同样的存储单元;
“双向”传递;
实参和形参必须是地址常量或变量;

6. Auto,register,extern,static关键字的使用,详细说明


自动变量是最常用的。 关键字auto能够显式地指定存储类别。
               显式定义         auto int x,y;


               隐含定义    等价       int x,y;


    实际上关键字“auto”可以省略,auto不写则隐含确定为“自动存储类别”,即动态存储方式。


    程序中大多数变量属于自动变量。

 对于使用频繁的变量,可以使用register声明为寄存器变量,其值存储在CPU中,加快了运行速度。
    如:
register int x;
          register char c; 

函数中的局部变量的值在函数调用结束后不消失而保留原值,以便下一次调用该函数时可以使用上一次调用的最后结果。这时就应该指定该局部变量为“静态局部变量”。

   外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量的定义处开始,到本程序文件的末尾。在此作用域内,全局变量可以为程序中各个函数所引用。


    ⑴在一个文件内声明外部变量


    如果全局变量在后面定义,而在前面的函数中要使用,则必须在使用前用extern声明该全局变量。


                  如:extern int Abc; 

7.文件的包含有几种?分别表示什么意思?

分为嵌套包含和集中包含。

功能:一个源文件可将另一个源文件的内容全部包含进来
一般形式:  #include   “文件名”
                或    #include    <文件名>
处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译

8.宏定义如何实现?撤销定义如何实现?

不带参数宏:

一般形式:   #define   宏名    [宏体]
功能:用指定标识符(宏名)代替字符序列(宏体)
定义位置:任意(一般在函数外面)
作用域:从定义命令到文件结束
#undef可终止宏名作用域
     格式:   #undef     宏名
   #define    YES   1
       #define     NO     0
       #define     PI      3.1415926
       #define     OUT     printf(“Hello,World”);

带参数宏:

一般形式:  #define    宏名(参数表)     宏体

例   #define    S(a,b)    a*b
        ………..
       area=S(3,2);
宏展开:         area=3*2;
宏展开:形参用实参换,其它字符保留
宏体及各形参外一般应加括号()


撤销定义:

#undef命令可以取消定义一个名称为宏:

#undef name

 这个命令使预处理器忘记name的所有宏定义。取消一个当前未定义宏的定义并不是错误。当一个名称被取消定义之后,就可以向它提供一个全新的定义(使用#define),而不会产生任何错误。在#undef命令内部,并不会执行宏替换。 

今日开发中遇到的问题汇总:

数组指针令人头大Zzzzzz

自我评价:有点乱

其他:无 


猜你喜欢

转载自blog.csdn.net/hexaczzz/article/details/80777832
今日推荐