待更新中.............
字符指针
字符指针:指向字符型数据的指针变量。每个字符串在内存中都占用一段一连的存储空间,并有唯一确定的首所在。即将字符串的首所在赋值给字符指针,可让字符指针指向一个字符串。
存放字符的字符指针
- #include<stdio.h>
- int main()
- {
- char ch = 'w';//(1)
- char* pc = &ch;//(2)
- *pc = 'w';//(3)
- return 0;
- }
复制代码
- 1):开发char范例变量为ch内存空间存放一个字符w;
- 2):将字符w所在存放在指针变量pc中(此时pc就是存放字符的指针也叫作字符指针)
- 3):pc解引用找到字符w
存放字符串的字符指针
- int main()
- {
- char* p = "hello world";//存放字符串的字符指针
- printf("%s\n", p);
- return 0;
- }
复制代码
答案是否定的。(字符串的指针):当一个字符串常量出如今表达式中时,它的值是个指针常量。编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针。
由于"hello,bit"这里是一个字符串常量是存在只读存储区的,所在存在于在历程的 text 段,text 段除了生存常量还生存可实行代码,因此是不答应可写权限的,而是只答应可读、可实行权限,内容不可改,以是,当指针指向这个字符串的时间,它指向的是字符串的首字符的所在,也就是第一个字符的所在。详细写这一行代码正确写法应该是:const char*p = "hello,world";(也恰恰符合了指针指向的内容不可以改变)。
- 举个小例子来简单明白上面内容(这里是c和指针这本书的内容)
"xyz"+1,这个意思指针指向的是第一个字符的所在,加上1就是下一个字符的所在也就是y
*("xyz")指针指向的是第一个字符的所在解引用就是第一个字符也就是x
"xyz"[2]这个就是指向下标为2的字符也就是z
字符串的指针与字符数组比力
字符数组:当数组名用于表达式中时,它们的值也是个指针常量。我们可以对它们举行下标引用、间接访问以及指针运算。
- int main()
- {
- char p[] = "hello world";//存放字符串的字符数组
- return 0;
- }
复制代码
全部char字符都一连的存放在栈区。内容可更改!(也就是数组是存放在栈区上的而与字符串指针不一样它是存放在制度存储区的内容不可改)。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |