C语言中的数组与指针

来源:互联网 发布:海外电视直播软件apk 编辑:程序博客网 时间:2024/05/18 21:12

转自网上一篇文章。

数组与指针的关系:

数组不是指针,但是在一些地方可以起到指针的作用,数组名本身是一个指针常量它不能被修改,但是数组名作为参数传递的时候,它就落为了一个普通的指针,注意多使用操作符sizeof()来测试一定的代码。

1.数组名不是指针

从下面的DEMO中可以看得出来:

/************************************************************************//* **Filename:array_and_pointer.c**Description:test array and pointer**Note:*//************************************************************************/#include <stdio.h>#include <conio.h>int main(void){char str[10];char *pstr;printf("char str[10] length is %d\n",sizeof(str));  //10printf("*pstr length is %d \n",sizeof(pstr));//4getch();return 0;}

2.数组名的本质

a.数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;

b.数组名的外涵在于其可以转换为指向其指代实体的指针,而且是一个指针常量,不能被修改,像str++这样;

c.指向数组的指针则是另外一种变量类型(WIN32平台下,长度为4),仅仅意味着数组的存放地址。

d.数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;

e.在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。


void testArray(char str[]){printf("Parameter char str[] length is %d\n",sizeof(str));   //4}






原创粉丝点击