C语言练习(5)——数组和指针访问形式

    科技2022-07-21  115

    有时候我们经常会把指针和数组混淆,其实数组就是数组,指针就是指针,他们之间没什么关系。 那么我们为什么会混淆呢? 我混淆的原因是:

    1、数组和指针都是传址方式进行访问2、数组可以用指针或者下标方式对数组进行访问3、指针可以用指针方式或下标方式对指针进行访问

    总的来说就是:数组和指针都是用传址方式进行访问,而且访问方式在表达形式上相同。

    直接上题目: 题目:给出数组a[7],要求用不同方法取出数组的第五个元素。

    #include <stdio.h> int main() { int a[7]={0,1,2,3,4,5,6}; int *p = a; /*******正确表达方式**********/ printf("a[4]=%d\n",a[4]);//数组的下标表现形式 printf("p[4]=%d\n",p[4]);//指针的下标表达方式 printf("*(a+4)=%d\n",*(a+4)); //数组的指针表达方式 printf("*(p+4)=%d\n",*(p+4)); //指针的指针表达方式 /********分界线,错误表达方式***********/ printf(" ****************** \n"); printf("(*a+4)=%d\n",(*a+4)); //结果虽然输出是4,但是它的意思是a[0]+4 printf("(&a+4)=%d\n",(&a+4));//这条语句的意思是&a+7sizeof(int),已经超出数组范围 //printf("*p[4]=%d\n",*p[4]); //直接语法错误 getch();//窗口保留函数,调试使用 return 0; }

    输出结果:

    所以一共有四种方式(可能还有其他方式笔者还没有找到)来获取数组的元素。

    注意:

    1、 a是数组首元素的首地址,也就是 a[0]的首地址 2、&a 是数组的首地址 a和&a的值是一样,但是意思不一样 3、a+1 是数组下一元素的首地址,即 a[1]的首地址 4、&a+1 是本数组后的下一个地址,即&a+7sizeof(int)已经越过了本数组

    Processed: 0.013, SQL: 8