数组记得初始化
二维数组定义时 列数必须给出 行数可以由编译器数
例如: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在*前还是*后)