多语言展示
当前在线:1644今日阅读:27今日分享:41

C语言里字符型指针与字符型数组之间的秘密

这里经验小编要和小伙伴们一起探讨“字符型指针”与“字符型数组”之间的小秘密呢前面我们已经讲过了“指针”和“指针与字符串”,不懂的小伙伴可以查看之前的经验哦“字符型指针”与“字符型数组”之间到底有什么小秘密呢,就和小编一起来看看吧4C语言里指针与字符串之间的那些事7C语言里的指针到底是什么?
工具/原料
1

一台电脑

2

Visual C++ 6.0 软件

方法/步骤
1

首先我们先把“头文件”和“主函数”的代码打好(不懂的小伙伴可以查看之前的经验哦)代码例子:#includevoid main(){}

2

然后我们创建一个“字符型变量指针”和“字符型变量数组”并且让“数组a”赋值给“指针p”,并输出p的值代码例子:良宋罩#includevoid main(){ char a[6]='lmmtt'; char *p=a; printf('%s\n',p);}

3

运行代码后,我们会发现,p输出的内容为a数组里,所有的元素

4

我们不妨输出*p试试看是什么样子的结果吧代码例子:#includevoid main(){char a[6]='lmmtt';char *p=a;printf('%s\n',*p);}运行代码后我们会称盲发现程序居然直接崩冲凤溃了       也就是说我们的代码有问题?到底哪里有问题呢?

5

我们会发现代码里:printf('%s\n',*p);的“%s”是有问题的,%s是输出字符串的标识符,当遇到“\0”时才截止输出,     也就是说“*p”不是拥有“\0”的字符串所以,我们使用“%c”试试看(%c:单个字符的标识符)代码例子:#includevoid main(){char a[6]='lmmtt';char *p=a;printf('%c\n',*p);}

7

我们不妨再试试看,看看能不能移动*p所代表的a数组元素代码例子:#includevoid main(){ char a[6]='lmmtt'; char *p=a; printf('%c\n',*p); p++; printf('%c\n',*p);}

8

我们运行代码后,发现屏幕输出了“m”        也就是说“指针p”所指向的是字符串的第一个字符,当给p增加时,p也向后移动相应数量单位指向下个元素简单的来说:             当指针p指向一个字符数组a(或字符串)时             *p            相当于    a[0]或字符串的首地址             *(p+1) 相当于    a[1]或字符串的第二个地址             *(p+2) 相当于    a[2]或字符串的第三个地址             ……             *(p+n) 相当于    a[n]或字符串的第n+1个地址             而             p              相当于     a数组

注意事项

如果该经验有帮助的话麻烦点个‘赞’谢谢大家啦

推荐信息