您的位置:首页 > 编程语言 > C语言/C++

C语言中的数组与指针

2013-01-17 14:42 309 查看
转自网上一篇文章。

数组与指针的关系:

数组不是指针,但是在一些地方可以起到指针的作用,数组名本身是一个指针常量,它不能被修改,但是数组名作为参数传递的时候,它就落为了一个普通的指针,注意多使用操作符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));  //10
printf("*pstr length is %d \n",sizeof(pstr));		//4
getch();
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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: