指针变量和数组变量有何区别
2011-09-30 11:17
141 查看
指针变量和数组变量有何区别
--------------------------------------------------------------------------------
资料文章 加入时间:2007-4-12 19:34:51 网络教育学院 张俊 点击:434
指针变量与数组变量密切相关,但二者又有本质上的区别。下面分别进行介绍:
1,指针变量是一个变量,该变量也具有某些类型,包括复合类型,但该变量是指向某一类型的指针。因此,指针变量中只能存放指针(或地址),而不能把一个非地址型的量赋给一个指针变量。存放的地址必须是指针变量指向的类型变量的地址,不能是其他类型变量的地址,在引用指针变量时,只有明确把指针指向某一变量后才可引用该指针变量的值(地址或变量)。如:
int *point1;
point1=1000H;
这明显是错误的,因为1000H是一个常量,不是一个地址,有人认为用1000H来表示一个存储单元的地址,为何不可呢?请记住1000H可表示一个地址单元,但1000H永远是一个整型常量(数字)。另外,指针变量引用要通过两种方法:*和&即指针运算符和取址运算符。
2,数组变量也是变量,不过不是一个变量而是某以数据类型的有序变量集合,数组中的每一个元素都代表一个变量。因此,数组没一个元素都可存放它所代表类型的一个数据,但当一个数组被定义为某一类型时,就不可存放其他类型的数据(这一点与指针类型相同),如:
定义 int a[5];的数组,如果存放a[0]=10.01;则系统会强制进行类型转换,a[0]将被赋予10;如果a[0]='a';由于a的ascii码为65,所以a[0]=65.
对数组元素的引用,可用指针变量来索引,数组名代表该数组的首地址,并可以参加运算,如:
static a[5]={0,1,2,3,4};
int *p=a;
则p可索引a[0],p+1可索引a[1]等。
用指针来索引数组可起到执行效率高的作用,但在用时要注意:
*(p++)与(++p)的区别。*p++等价与*(p++),因++与*预算府的优先级相同,按自右向左结合率,可知相同;(*p)++相当于(a[0])++,即元素的值加1;*(++p)相当于a[++i],即先++再*,然后取*p,相当于p+1->p.
--------------------------------------------------------------------------------
资料文章 加入时间:2007-4-12 19:34:51 网络教育学院 张俊 点击:434
指针变量与数组变量密切相关,但二者又有本质上的区别。下面分别进行介绍:
1,指针变量是一个变量,该变量也具有某些类型,包括复合类型,但该变量是指向某一类型的指针。因此,指针变量中只能存放指针(或地址),而不能把一个非地址型的量赋给一个指针变量。存放的地址必须是指针变量指向的类型变量的地址,不能是其他类型变量的地址,在引用指针变量时,只有明确把指针指向某一变量后才可引用该指针变量的值(地址或变量)。如:
int *point1;
point1=1000H;
这明显是错误的,因为1000H是一个常量,不是一个地址,有人认为用1000H来表示一个存储单元的地址,为何不可呢?请记住1000H可表示一个地址单元,但1000H永远是一个整型常量(数字)。另外,指针变量引用要通过两种方法:*和&即指针运算符和取址运算符。
2,数组变量也是变量,不过不是一个变量而是某以数据类型的有序变量集合,数组中的每一个元素都代表一个变量。因此,数组没一个元素都可存放它所代表类型的一个数据,但当一个数组被定义为某一类型时,就不可存放其他类型的数据(这一点与指针类型相同),如:
定义 int a[5];的数组,如果存放a[0]=10.01;则系统会强制进行类型转换,a[0]将被赋予10;如果a[0]='a';由于a的ascii码为65,所以a[0]=65.
对数组元素的引用,可用指针变量来索引,数组名代表该数组的首地址,并可以参加运算,如:
static a[5]={0,1,2,3,4};
int *p=a;
则p可索引a[0],p+1可索引a[1]等。
用指针来索引数组可起到执行效率高的作用,但在用时要注意:
*(p++)与(++p)的区别。*p++等价与*(p++),因++与*预算府的优先级相同,按自右向左结合率,可知相同;(*p)++相当于(a[0])++,即元素的值加1;*(++p)相当于a[++i],即先++再*,然后取*p,相当于p+1->p.
相关文章推荐
- 作为引用数据类型,数组变量与基本数据类型变量的使用有哪些区别?
- 字符指针变量和字符数组的区别
- JavaScript中,数组存储单一变量,对象,数组时的区别
- 【繁琐】 js中关于形参和实参 对于数组和Number变量的区别
- c语言中数组名和指针变量的区别
- 指向变量的常指针与指向常变量的指针变量的区别
- 指向常量的指针常量,指向变量的指针常量,指向常量的指针变量的区别
- 从汇编语言的角度看清数组名和指针变量的区别
- 变量、指针变量、指针数组、数组指针、函数指针、函数指针数组
- sizeof(变量名)与strlen(字符数组名)的使用区别
- (转)字符型指针变量与字符数组的区别
- 字符指针变量与字符数组的区别
- 字符串指针变量与字符数组的区别
- 字符指针变量和字符数组的区别
- 字符数组名与字符串指针变量名的区别
- 字符指针变量和字符数组的区别:
- 集合和数组保存对象的引用变量(区别C++的STL实现)
- 字符指针变量和字符数组的区别:
- Java与Flex区别二:整数除法、变量定义、数组取值
- Java千百问_06数据结构(015)_数组和普通对象的引用变量有什么区别