int a[];
int b[];
上面申明两个数组,不能进行以下赋值
b = a;
你不能使用赋值符把一个数组的所有元素复制给另一个数组,必须使用一个循环,每次复制一个元素
数组和指针
int a[];
int *b;
声明一个数组,编译器将根据声明指定的元素数量为数组保留内存空间,然后再创建数组名,它的值是一个常量,指向这段空间的起始位置。
声明一个指针变量时,编译器只为指针本身保留内存空间,并不为任何整形值分配内存空间。
void strcpy(char *buffer,char const *string)
{
while((*buffer++ = *string++) != '\0')
;
}
注意:形参被声明为一个指向const字符的指针。对于一个并不打算修改这些字符的函数而言,是一个号习惯。
原因有:1.这是一样良好的文档习惯。有些人希望仅观察该函数的原型就能发现该数据不会被修改,而不必阅读完整的函数定义
2.编译器可以捕捉到任何试图修改该数据的意外错误
3.这类声明允许向函数传递const参数。
指向数组的指针:
int (*p)[10]:指向整形数组的指针。
可用于二维数组:
int matrix[3][10];
int (*p)[10] = matrix;
指针数组:
int *api[10]; //10个元素,每个元素都是一个指向整形的指针