2019-11-27

数组记得初始化


二维数组定义时 列数必须给出 行数可以由编译器数

例如:int a [] [5] = {

                {0,1,2,3,4},

                {2,3,4,5,6},

};


scanf中的&    操作对象必须是变量


地址的大小是否相同取决于编译器


左值之所以叫左值    是因为左边的值不是变量  而是值  是表达式计算的结果


指针的应用:

   1、 函数使交换值                                                                                                                           思考:函数中return的应用   返回值能在main函数中进行判断

    2、当传回值不只一个时    自动填好传回来

    3、函数返回运算的状态(return)    指针返回   传入数组后对数组做操作

    4、const数组    const int a [ ] = {1,2,3,4,5,};    数组变量已经是const了 表示每个数组单元都是const int  不能被改变 只能初始化赋值            数组传入函数时传入地址  所以用const保护数组不被函数破坏

    5、传入较大的数时用作参数

    6、需要用函数修改不只一个变量

    7、动态申请内存


指针常见错误:

    1、定义指针后还没有指向某一个值就开始使用

    2、函数中的数组    其实是指针类型    可以更改值    不能用sizeof函数计算长度    int *a和 int [a]等价    数组变量是特殊的指针     数组变量本身表达地址    取地址不需要用&    数组单元的每一个单个的变量需要用&    p [0] = *p    *可以对指针做 也可以对数组做    int a [] = int * const a    即数组不能改变 不能a = b

    3、


指针和const:

int *const q =    表示一旦得到了某个变量的地址,不能再指向其他变量

所指是const:

const int *p = &i;    i可以赋值    p可以得到别的变量的地址(指向别的变量)    不能通过*p赋值

例:

①int i;

②const int* p1 = &i;

③int const* p2 = &i;

④int *const p3 = &i;

其中,② = ③    (判断const标志是const在*前还是*后)

你可能感兴趣的:(2019-11-27)