网站建设的价值是什么意思,金融网站建设公司,网站空间便宜,合优人才网下载通过指针引用字符串可以更加方便灵活的使用字符串。 字符串的引用方式有两种#xff0c;下面简单介绍一下这两种方法。 1.用字符数组来存放一个字符串。
1.1
可以通过数组名和下标来引用字符串中的一个字符。
1.2
还可以通过数组名和格式声明符%s输出整个字符串。
具体实…
通过指针引用字符串可以更加方便灵活的使用字符串。 字符串的引用方式有两种下面简单介绍一下这两种方法。 1.用字符数组来存放一个字符串。
1.1
可以通过数组名和下标来引用字符串中的一个字符。
1.2
还可以通过数组名和格式声明符%s输出整个字符串。
具体实现代码如下
#include stdio.h
int main()
{char ch[] xuejiejie;printf(%s\n, ch); //输出整个数组printf(%c\n, ch[1]); //输出第2个字符return 0;
}
结果
xuejiejie
uD:\VS\Project4\x64\Debug\Project4.exe (进程 17608)已退出代码为 0。
按任意键关闭此窗口. . .2.用字符指针变量引用字符串常量。
先来举个例子
#include stdio.h
int main()
{const char* string xuejiejie;printf(%s\n,string);return 0;
}结果
xuejiejieD:\VS\Project4\x64\Debug\Project4.exe (进程 17916)已退出代码为 0。
按任意键关闭此窗口. . .
分析
在c语言中对字符串常量是按照字符数组来处理所以首先在内存中开辟一个连续字符数组来存放该字符串常量。
但是通过上面的代码我们可以发现字符串是没有数组名的所以只能通过指针变量来引用。
其实在对指针进行赋值时只是把字符串中的第一个字符的地址首元素地址赋值给指针变量。
对上面string而言就是把“x”的地址赋值给string。注意不是把整个xuejiejie赋值给string
错误示范 const char* string xuejiejie;*string xuejiejie; 注意当对一个数值型的数组时只用数组名是不能输出整个数组的只能一个一个输出。 对于字符串的存取可以采用下标法指针法和指针变量法。 如下所示
#include stdio.h
#include string.h
int main()
{char a[] xuejiejie;//下标法for (int i 0; i strlen(a); i){printf(%c, a[i]);}printf(\n);//指针变量char* ch;ch a;printf(%s\n, ch);for (; *ch ! \0; ch){printf(%c, *ch);}return 0;
}结果
xuejiejie
xuejiejie
xuejiejie
D:\VS\Project4\x64\Debug\Project4.exe (进程 8860)已退出代码为 0。
按任意键关闭此窗口. . . 字符指针作为函数参数时 函数的形参和实参都可以分别用字符数组名或字符指针变量来表示。
具体情况如下表所示
实参形参字符数组名字符数组名字符数组名字符指针变量字符指针变量字符指针变量字符指针变量字符数组名比较字符指针变量和字符数组 1.
字符数组是由许多元素组成的里面只能一个一个来存放一个字符存放的是‘字符’而字符指针只是存放字符串中第一个字符的地址而不是整个字符
2.
可以对字符指针变量进行赋值而不能对数组名进行赋值。数组名代表地址是常量不能赋值
3.
初始化含义不同。数组可以在定义时随便对其赋值但不能用赋值语句对字符数组中的全部元素整体赋值。而指针数组可以后再进行赋值语句。
4.
开辟的存储空间不同。字符数组将会根据字符串长度或者人为定义的长度来分配储存单元。而字符指针变量只会分配一个储存单元用来存放首元素地址。
5.
指针变量的值后期可以自行设定改变而字符数组的数组名代表一个固定的值首元素地址不能改变。
6.
字符数组中各元素的值可以改变而字符指针变量指向的字符串常量中的内容是不能改变的。