知识1
字符串和字符指针
·如果定义一个字符指针接收字符串常量的值,该指针就指向字符串的首字符。这样,字符数组和字符指针都可以用来处理字符串。例如:
Char sa []=”array”;
Char *sp=”point”;
Printf(“%s”,sa);
Printf(“%s”,sp);
Printf(“%s ”,”string”);
输出:
Array point string
调用printf(函数),以%s的格式输出字符串时,作为输出参数,数组名sa、指针sp和字符串“string”的值都是地址,从该地址所指定的单元开始连续输出其中的内容(字符),直至遇到‘ ’为止。
·定义字符指针后,如果没有对它赋值,指针的值是不确定的,不能明确它指向的内存单元。
·为了尽量避免引用未赋值的指针所造成的危害,在定义指针时,可先将它的初值置为空。 如:char *s=NULL。
2.指针、数组和地址间的关系
·数组的基地址是在内存中存储数组的起始位置,它是数组中第一个元素(下标为0)的地址,因此数组名本身是一个地址即指针值。
·指针是以地址作为值的变量,而数组名的值是一个特殊的固定地址,可以把它看作是常量指针。
P=a; 等价于 P=&a[0];
p=a+1; 等价于 p=&a[1];
注:P=a+1是合法的,但a=a+1就是非法的。
·数组名可以使用指针形式,而指针变量也可以转换为数组形式。
·如果变量p是指向某个指定类型变量的指针,那么表达式p+1代表访问该类型的下一个变量的内存地址。(像p+i、p++、p+=i这样的表达式都是有意义的)
·两个相同类型的指针相减,表示它们之间相隔的数组元素数目。
注:在C语言中,指针的算术运算只包括两个相同类型的指针相减以及指针加上或减去一个整数,其他的操作如指针相加、相乘和相除,或指针加上和减去一个浮点数都是非法的。
·两个相同类型指针还可以使用关系运算符比较大小。
遇到的问题:作业第三题!!!!作业第三题!!!第三题...
希望老师可以讲解 表示非常想不明白