在C中,数组与指针容易混淆,看过文档之后,我把我自己关于数组与指针的理解写下来。
[quote]数组与指针的主要区别在于:
1、数组在声明的时候就要分配SIZE,但指针不用;
2、数组通过下标来访问里面的元素,指针通过移动地址指向访问里面的存储元素;
3、数组一旦声明,它的SIZE是固定的,但指针是变动的;
4、指针只存储地址,它不能被赋值,而可以对数组可以赋值。
e.g.
int i = 10; int *p; p = &i; (指针p传地址)
int arr[] = {1, 2, 23}(数组arr赋初值))
[/quote]
[quote]char * a[10]; /* 分配存储大小,它是数组,但里面存放着整形指针 */
char * b[]; /* 参数传递,它即是数组又是指针 */
void writelines(char *str[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%s\n", str[i]); //这是数组的写法,编译器把它作为数组来处理
}
for(i=0; i<n; i++) {
printf("%s\n", *str++); //这是指针的写法,如果它仅仅是数组的话,这样写明显是错误的,但在这里编译器把它作为指针来处理
}
}
void writeArray() {
char * str[] = {"aaaa1","bbbb2","cccc3","dddd4","eeee5","ffff6","gggg7"}; //这是数组
int i;
for(i=0; i<7; i++) {
printf("%s\n", str[i]); /*数组的处理方式*/
}
for(i=0; i<7; i++) {
printf("%s\n", *str++); /*指针的处理方式,但这里是数组,所以编译器报错*/
}
}[/quote]
[quote]数组与指针的主要区别在于:
1、数组在声明的时候就要分配SIZE,但指针不用;
2、数组通过下标来访问里面的元素,指针通过移动地址指向访问里面的存储元素;
3、数组一旦声明,它的SIZE是固定的,但指针是变动的;
4、指针只存储地址,它不能被赋值,而可以对数组可以赋值。
e.g.
int i = 10; int *p; p = &i; (指针p传地址)
int arr[] = {1, 2, 23}(数组arr赋初值))
[/quote]
[quote]char * a[10]; /* 分配存储大小,它是数组,但里面存放着整形指针 */
char * b[]; /* 参数传递,它即是数组又是指针 */
void writelines(char *str[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%s\n", str[i]); //这是数组的写法,编译器把它作为数组来处理
}
for(i=0; i<n; i++) {
printf("%s\n", *str++); //这是指针的写法,如果它仅仅是数组的话,这样写明显是错误的,但在这里编译器把它作为指针来处理
}
}
void writeArray() {
char * str[] = {"aaaa1","bbbb2","cccc3","dddd4","eeee5","ffff6","gggg7"}; //这是数组
int i;
for(i=0; i<7; i++) {
printf("%s\n", str[i]); /*数组的处理方式*/
}
for(i=0; i<7; i++) {
printf("%s\n", *str++); /*指针的处理方式,但这里是数组,所以编译器报错*/
}
}[/quote]