龙空技术网

菜鸟学C_字符串指针(指向字符串的指针)

稷下 155

前言:

此时同学们对“c语言复制字符串指针”都比较重视,兄弟们都想要分析一些“c语言复制字符串指针”的相关文章。那么小编也在网络上收集了一些有关“c语言复制字符串指针””的相关知识,希望看官们能喜欢,小伙伴们一起来了解一下吧!

C语言中没有类似java,python等面向对象的编程语言中string那样的特定的字符串类型,通常是将字符串放在一个字符数组中。

遍历字符串代码:

#include<stdio.h>#include<string.h> 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操作时会影响到常量池中的字符串。

标签: #c语言复制字符串指针