指针相加无意义,但可相减。
从一个指针中减去另一个同类型的指针,余数是使指针变量分开的基本类型的元素的个数。
如:
正确理解下列组合操作的含义:
*p++: 取p所指向单元的数据作为表达式的值, 然后使p指向下一个单元;
(*p)++:取p所指向单元的数据作为表达式的值,然后使该单元的数据值增1;
*++p: 使p指向下一个单元,然后取该单元的数据作为表达式的值;
++*p:将p所指向单元的数据增1并作为表达式的值;
字符数组只能对各个元素赋值。
字符指针变量
字符数组中各元素的值是可以改变的,
字符指针变量指向的字符串中的内容是不变的( 不能对字符串常量再赋值)。
从一个指针中减去另一个同类型的指针,余数是使指针变量分开的基本类型的元素的个数。
如:
int a[4];
int * p1= &a[0];
int * p2= &a[3];
int k = (p2 – p1);
注:指针运算只有在对数组进行时才有意义正确理解下列组合操作的含义:
*p++: 取p所指向单元的数据作为表达式的值, 然后使p指向下一个单元;
(*p)++:取p所指向单元的数据作为表达式的值,然后使该单元的数据值增1;
*++p: 使p指向下一个单元,然后取该单元的数据作为表达式的值;
++*p:将p所指向单元的数据增1并作为表达式的值;
字符数组只能对各个元素赋值。
char str[20] = “hello”;
str=″I love China!″; // error
字符指针变量
char *a = “hello”;
a=″I love China!″; // right
字符数组中各元素的值是可以改变的,
字符指针变量指向的字符串中的内容是不变的( 不能对字符串常量再赋值)。
char a[]=”House”;
char *b=” House”;
a[0]=’h’; //r取代u
b[2]=’r’; //非法,字符串常量不能改变