C++基础:7.指针算术及指针与字符串

①指针算术:

和动态数组的使用类似,给指针变量+1,指针指向数组的下一个元素,这时指针指向的地址会增加指针指向类型的字节数。

举个例子:指针py指向double类型(设系统使用8字节存储double),原本存储的地址是0x28ccf0;在py+1之后,存储的地址变为0x23ccf8,指向数组中第二个元素。

也就是说,通常情况下,C++将数组名解释为第一个元素的地址,即数组arr第一个元素的地址,既可以用arr也可以用&arr[0]表示。

相应的,指向它的指针加一后,它存储的地址变为&arr[1]。

指向的地址上的值表示方法类似:*arr[1]即为*(arr+1)。

②指针与字符串:

cout觉得,除了char,其他所有的数据类型只代表一个字符的地址。所以,如果要打印char类型的数组元素,像这样:

char fruits [10] = 'apples';

cout<< fruiits;

它会打印出apples,而不是a。也就是说,当cout遇到char数组名,会一直打印到遇到空字符。

先说两个函数:strlen()和strcpy();前者获取字符串长度,后者复制

strlen(),括号中写要获取的字符串的长度,可以加减;

strcpy可以填三个参数,中间要用逗号连接,第一个是目标地址,第二个是要复制的字符串的地址,第三个是要复制的最大字符数。

但是strcpy有个问题:它把字符串复制到数组里,如果字符串比数组长度短,它就把字符串全部复制了再加个空字符;但是如果字符串比数组长,它不加空字符,复制到哪里算哪里。

所以我们在使用时就会用到第三个参数。

例:

char pet[15];
strcpy(pet,'I have a lovely dog and his name is zyw',14)//只要14个字符,给空字符留空间
pet[14] = '\0';//手动添加空字符

猜你喜欢

转载自blog.csdn.net/qq_38978066/article/details/81147923
今日推荐