C语言中的数组与指针
2013-01-17 14:42
309 查看
转自网上一篇文章。
数组与指针的关系:
数组不是指针,但是在一些地方可以起到指针的作用,数组名本身是一个指针常量,它不能被修改,但是数组名作为参数传递的时候,它就落为了一个普通的指针,注意多使用操作符sizeof()来测试一定的代码。
1.数组名不是指针
从下面的DEMO中可以看得出来:
2.数组名的本质
a.数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
b.数组名的外涵在于其可以转换为指向其指代实体的指针,而且是一个指针常量,不能被修改,像str++这样;
c.指向数组的指针则是另外一种变量类型(WIN32平台下,长度为4),仅仅意味着数组的存放地址。
d.数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;
e.在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。
数组与指针的关系:
数组不是指针,但是在一些地方可以起到指针的作用,数组名本身是一个指针常量,它不能被修改,但是数组名作为参数传递的时候,它就落为了一个普通的指针,注意多使用操作符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 }
相关文章推荐
- c语言中指针与数组名
- C语言获取指针指向的数组长度的基本尝试
- C语言字符串、数组与指针结合
- C语言---关于char型数组和char型指针的问题
- C语言指针详述(2):数组与指针
- c语言,指针与数组--指针与二维数组2
- c语言数组与指针详解
- 深入理解C语言中的指针与数组之指针篇
- C语言 指针与数组的详解及区别
- 【C++11】再认识C语言中的指针与数组的区别
- 转-C语言中使用指针与数组的区别
- C语言之指针、数组和函数
- C语言_数组与指针
- C语言数组与指针详解
- 20170214C语言提升08_指针_01变量及指针及数组
- C语言学习大纲--数组与指针
- C语言:浅析指针数组、数组指针、函数指针、函数指针数组、指向函数指针数组的指针
- C语言结构体里的成员数组和指针
- 20170215C语言提升08_指针_02数组指针及指针数组及函数指针
- C语言 字符数组与字符指针比较