C语⾔基础——字符串指针(指向字符串的指针)
C语⾔中没有类似java,python等⾯向对象的编程语⾔中string那样的特定的字符串类型,通常是将字符串放在⼀个字符数组中。
遍历字符串代码:
#include<stdio.h>
#include<string.h>
c++中string的用法void main(){
char str[] = "hello world";//定义⼀个字符数组
int len = strlen(str),i;//获取字符数组的长度
for (i = 0; i < len; i++) {
printf("%c", str[i]);
}
printf("\n");
char *p = str;//定义⼀个指针变量,⾥⾯存放字符数组的⾸地址
for (i = 0; i < len; i++) {
printf("%c", *(p++));
}//使⽤指针的⽅式遍历字符数组,使⽤这种⽅式之后,指针p指向了数组以外的地址,有风险
printf("\n");
for (i = 0; i < len; i++) {
printf("%c", *(str+i));//也可以使⽤*(p+i)推荐使⽤这种⽅式,安全有逼格
}//使⽤字符数组变量str的指针特性进⾏遍历字符数组
system("pause");
}
运⾏结果打印:hello world
hello world
hello world
字符数组归根结底还是⼀个数组,上图中定义的字符串数组,str也可以认为是⼀个指针,指针以及数组⽅⾯操作均适⽤。
除了字符数组外,C语⾔还⽀持直接使⽤⼀个指针指向字符串的⽅式来表⽰字符串,代码如下:
char strc[] = "string";
char *strp = "string";
printf("字符串在常量池中的地址:%p\n","string");//0x100000f33
printf("以字符数组⽅式定义的数组地址:%p\n",strc);//0x7ffeefbff507
printf("指针形式的字符串地址:%p\n",strp);//0x100000f33
字符串⼀旦被创建就存在于常量池中。以字符数组形式创建的字符串,实际上是从字符串常量池中复制了⼀个副本,所以修改字符数组的内容时,只是修改的⾃⼰的副本,并不会影响到常量池中的字符串。⽽对字符串指针strp操作时会影响到常量池中的字符串
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论