(1)用字符指针指向一个字符串
示例:
#include <stdio.h>
int main()
{
char *string="I love China!";
printf("%s\n",string); //输出定义的字符串
}
(2)字符串中字符的存取方法
对字符串中字符的存取方法,可以有两种方法:下标方法和指针方法。
下标方法:将字符串str复制到字符串chr
#include <stdio.h>
int main()
{
char str[] = "She is a beautiful gril!",chr[40];
int i;
for(i=0;*(str+i)!='\0';i++)
{
*(chr+i) = *(str+i);
}
*(chr+i)='\0';
printf("String str is:%s\n",str);
//printf("String chr is:%s\n",chr);
printf("String chr is:");
for(i=0;chr[i]!='\0';i++)
{
printf("%c",chr[i]);
}
printf("\n");
return 0;
}
指针方法:将字符串str复制到字符串chr
#include <stdio.h>
int main()
{
char str[] = "She is a beautiful gril!",chr[40],*p1,*p2;
int i;
p1=str;
p2=chr;
for(;*p1!='\0';p1++,p2++)
{
*p2=*p1; //把p1的值依次赋值给p2
}
*p2='\0';
printf("String str is:%s\n",str);
printf("String str is:");
for(i=0;chr[i]!='\0';i++)
{
printf("%c",chr[i]);
}
printf("\n");
return 0;
}
此两种方法的输出结果都是:
(3)用函数调用实现字符串的复制
方法一:用字符数组作参数
#include <stdio.h>
int main()
{
void copy_string(char a[],char b[]);
char str[]="I am a teacher!";
char chr[]="You are a student!";
int i;
printf("String str is:%s\n",str);
printf("String chr is:%s\n",chr);
printf("\n");
printf("copy string chr to string str:\n");
copy_string(str,chr); //把str和chr这两个数组的第一个地址传递过去
printf("String str is:%s\n",str);
printf("String chr is:");
for(i=0;chr[i]!='\0';i++)
{
printf("%c",chr[i]);
}
printf("\n");
return 0;
}
void copy_string(char a[],char b[])
{
int i=0;
while(a[i]!='\0')
{
b[i]=a[i];
i++;
}
b[i]='\0';
}
方法二:用字符指针作参数
#include <stdio.h>
int main()
{
void copy_string(char *a,char *b);
char *str="I am a teacher!";
char chr[]="You are a student!";
printf("String str is:%s\nString chr is:%s\n",str,chr);
printf("copy string chr to string str:\n");
copy_string(str,chr);
printf("String str is:%s\nString chr is:%s\n",str,chr);
return 0;
}
void copy_string(char *a,char *b)
{
while(*a!='\0')
{
*b++=*a++;
}
*b='\0';
}
此两种方法的运行结果是:
(4)对使用字符指针变量和字符数组的讨论
虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但是它们二者有差别的,不能混为一谈。
主要概况起来有以下几点:
1、字符数组由若干个原始组成,每个元素中放一个字符,而字符指针变量中存放的是地址(字符串第一个字符的地址),绝不是将字符串放到字符指针变量中。
2、赋值方式。对字符数组只能对各个元素赋值。
不能用以下方法对字符数组赋值:
char str[20];
str = "I love China!";
而对字符指针变量,可以用下面的方法赋值:
char *a;
a = "I love China!";
但注意赋给a的不是字符,而是字符串第一个元素的地址。
3、对字符指针变量赋初值:
char *a = "I love China!";
等价于
char *a;
a = "I love China!";
而对数组的初始化:
char str[20] = {"I love China!"};
不能等价于
char str[20];
str[] = "I love China!";
4、指针变量的值是可以改变的
例如:
#include <stdio.h>
int main()
{
char *str="I love China!";
printf("%s\n",str);
str+=7;
printf("%s\n",str);
return 0;
}
运行结果:
另外需要说明的是,若定义了一个指针变量,并使它指向一个字符串,就可以用下标形式引用指针变量所指的字符串中的字符。
例如:
#include <stdio.h>
int main()
{
char *str="I love China!";
int i;
printf("The sixth character is %c\n",str[5]);
for(i=0;str[i]!='\0';i++)
{
printf("%c",str[i]);
}
printf("\n");
return 0;
}
执行结果是:
相关推荐
9.1 1分钟彻底理解指针的概念 9.2 大话C语言指针变量 9.3 C语言指针变量的运算 9.4 数组指针(指向数组的指针) 9.5 字符串指针(指向字符串的
指针与字符串 3 指针与字符串 字符指针的定义: char *pc; 字符指针的赋值: char *pc,c;pc=&c; 用字符串常量为字符指针初始化,其形式与字符数组的初始化类似,却有本质上的区别:字符数组获得字符串所有的字符...
C语言用指针将字符串数组位置颠倒,实现ABCDEFGHIJKLMNOPQRSTUVWXYZ转换成ZYXWVUTSRQPONNOPQRSTUVWXYZ
本文档在某知名网站下载,要么浏览量最多,要么最新,保证精品,至少为你节约3RMB。格式为caj或者kdh需要专业阅读器打开。
c语言字符串交换,使用指针实现, 希望多多相互理解 学习
本文给出两个C语言指针实现字符串的反转程序,感兴趣的朋友可以参考下。
曾经从朋友那见过一道题,解析以下字符串"abc=b\\n;c=\\x61d;d=234;t=\\n;d=\"test;yes\";m=1023456;h=123dfr;"。出于强化自己C语言指针应用能力的目的,写了如下代码。运行结果也已经打包进资源中。如有需求可在...
用指针计算字符串长度,简单的小程序,c语言
⑴ 编写函数int FindNoVowel(char *str[],int num,char res[][20]),str指向的指针数组中保存若干单词字符串的首地址,num保存单词的个数,res指向的数组保存找到的符合条件的单词字符串,每行存放一个单词,要求将...
数组例程详解 指针例程详解 字符串例程详解 PPT详细描述数组、指针和字符串在C程序中的应用
通过键盘输入一串小写字母(a~z)组成的字符串。 请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。...1.字符串的输入与输出;
c语言写的字符串翻转算法,用指针解决问题,程序简洁有力,是C语言指针学习一个很好的范例
该ppt的程序是本人使用QT亲自调试通过,...C语言没有单独的字符串对象,它是通过数组的形式来表示字符串的,使用指针变量来引用字符串高效并且不受下标的约束,在字符串复制的过程中使用指针大大提高了内存的使用效率。
一个小程序,实现字符串的逆序和调序输出。
复制字符串指针法,c语言
函数返回: 分割后的子字符串列表指针。 注 意:存储分割后的子字符串列表的变量str_list是用动态内存分配函数malloc分配的,在使用完str_list后要及时释放其所占用的内存。 ———————————————— 版权...
C语言第讲指针与字符串字符数组PPT课件.pptx
C语言的精髓-指针,多做训练才能避免泄露,看吧!
C语言34:用指针数组作为函数的参数显示多个字符串