数组和指针

声明一个数组时,编译器将根据声明所指定的元素数量为为数组保留内存空间,然后再创建数组名,它的值是一个常量,指向这段空间的起始位置。

声明一个指针变量时,编译器只为指针本身保留内存空间,它并不为任何整型值分配内存空间。而且,指针变量并未被初始化为指向任何现有的内存空间,如果它是一个自动变量,它甚至根本不会被初始化。

如:

int a[5];
int *b

此时,*a是完全合法的,但表达式*b是非法的,*b将访问内存中某个不确定的位置,或者导致程序终止,另外,b++可以通过编译,但是a++不能,因为a是常量。

作为函数参数的数组名:

使用数组作为形参时,函数的声明形式可以为:

int strlen(char* string);
int strlen(char string[])
原文地址:https://www.cnblogs.com/yangxingsha/p/11551363.html