当前位置:天才代写 > tutorial > C语言/C++ 教程 > 彻底搞定C语言指针 第三篇

彻底搞定C语言指针 第三篇

2017-11-03 08:00 星期五 所属: C语言/C++ 教程 浏览:476

1.数组元素

看下面代码

int i,a[]={3,4,5,6,7,3,7,4,4,6};
for (i=0;i<=9;i++)
{
printf ( “%d”, a[i] );
}

很显然,它是显示a 数组的各元素值。

我们还可以这样会见元素,如下

int i,a[]={3,4,5,6,7,3,7,4,4,6};
for (i=0;i<=9;i++)
{
printf ( “%d”,  *(a+i) );
}

它的功效和浸染完全一样

2. 通过指针会见数组元素

int i,*pa,a[]={3,4,5,6,7,3,7,4,4,6};
pa =a  ;//请留意数组名a直接赋值给指针 pa
for (i=0;i<=9;i++)
{
printf ( “%d”, pa[i] );
}

很显然,它也是显示a 数组的各元素值。

别的与数组名一样也可如下:

int i,*pa,a[]={3,4,5,6,7,3,7,4,4,6};
pa =a;
for (i=0;i<=9;i++)
{
printf ( “%d”, *(pa+i) );
}

看pa=a即数组名赋值给指针,以及通过数组名、指针对元素的会见形式看,它们并没有什么区别,从 这里可以看出数组名其实也就是指针。莫非它们没有任何区别?有,请继承。

3. 数组名与指针变量的区别

请看下面的代码:

int i,*pa,a[]={3,4,5,6,7,3,7,4,4,6};
pa =a;
for (i=0;i<=9;i++)
{
printf ( “%d”, *pa );
pa++ ;  //留意这里,指针值被修改
}

可以看出,这段代码也是将数组各元素值输出。不外,你把{}中的pa改成a试试。你会发明措施编译 堕落,不能乐成。看来指针和数组名照旧差异的。其实上面的指针是指针变量,而数组名只是一个指针 常量。这个代码与上面的代码差异的是,指针pa在整个轮回中,其值是不绝递增的,即指针值被修改了 。数组名是指针常量,其值是不能修改的,因此不能雷同这样操纵:a++.前面4,5节中pa[i],*(pa+i )处,指针pa的值是使终没有改变。所以变量指针pa与数组名a可以交流。

4. 申明指针常量

再请看下面的代码:

int i, a[]={3,4,5,6,7,3,7,4,4,6};
int * const pa=a;//留意const的位置:不是 const int * pa,
for (i=0;i<=9;i++)
{
printf ( “%d”, *pa );
pa++ ;  //留意这里,指针值被修改
}

这时候的代码能乐成编译吗?不能。因为pa指针被界说为常量指针了。这时与数组名a已经没有差异 。这更说明白数组名就是常量指针。可是…

int * const a={3,4,5,6,7,3,7,4,4,6};//不可

int a[]={3,4,5,6,7,3,7,4,4,6};//可以,所以初始化数组时肯定要这样。

以上都是在VC6.0上尝试。

 

    关键字:

天才代写-代写联系方式