字符串常量与 字符指针,字符数组

1. 字符串的定义
(1) char buf[10] = "hello"; //定义了10个字节的数组,但只用了6个字节存放字符串
(2) char *str = "hello"; //此处hello是字符串常量,存储在长常量区,把首地址传给指针变量 sts
(3) char *s = "hello"; // 指针s 与 指针str的内容都是指向字符串常量“hello” 其值相等;
(4) char buff[] = "hello"; //定义了一个数组没有规定大小,但字符串常量用了6个字节存放字符串(包含\0),数组大小为6个字节
第二、三种方式,只允许访问,不允许通过指针形式修改字符串中的内容,如:*(str+1) = E; 是不被允许的,字符串存在常量区;
通过buf和buff是可以修改字符串指向的内容,buf[1] = H;buff[1]=G;是可以的,且buf和buff是指向两个不同的地址

原文地址:https://www.cnblogs.com/electronic/p/10848331.html

时间: 2024-07-29 17:54:11

字符串常量与 字符指针,字符数组的相关文章

第6章 数组、指针与字符串(二)指针与数组

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/10234949.html

转:字符数组与字符指针

转自:http://blog.csdn.net/qiumm/article/details/5657120 1.字符指针可以指向一个字符串. 我们可以用字符串常量对字符指针进行初始化.例如,有说明语句: char *str = "This is a string."; 是对字符指针进行初始化.此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址. 这里要注意字符指针与字符数组之间的区别.例如,有说明语句: char string[ ]="This is a st

字符数组与字符指针的区别与联系

1.字符指针可以指向一个字符串. 我们可以用字符串常量对字符指针进行初始化.例如,有说明语句: char *str = "This is a string."; 是对字符指针进行初始化.此时,字符指针指向的是一个字符串常量的首地址,即指向字符串的首地址. 这里要注意字符指针与字符数组之间的区别.例如,有说明语句: char string[ ]="This is a string."; 此时,string是字符数组,它存放了一个字符串. 字符指针str与字符数组str

关于指针与数组定义的字符串

将指针指向一串字符串(char *a = "abcdef";),可以以 “printf("a[2] = %c\n", a[2])“ 这种方式输出字符串中第三个字符.但不能这样 “a[2] = 'G' “ 妄图将字符串中的第三个字符‘c'改为‘G‘.至于为什么,我现在是不知道了.先看代码. 1 #include <stdio.h> 2 3 int main(void) 4 { 5 char *a = "abcdef"; 6 printf

C++——指针---指向数组的指针---指向字符串的指针--指向函数的指针--指针的指针--指针的引用

一.指向数组的指针 代码示例1: 1 int main() 2 { 3 int a[10]={0,2,4,6,8,10,12,14,16,18}; 4 int *p; 5 for(p=&a[0];p<&a[0]+10;p++) 6 printf("%d ",*p); 7 } 代码示例2: int a[10]={0,2,4,6,8,10,12,14,16,18}; int *p; p=a; printf("%d\n",*(a+5));//注意加括

在字符串中删除特定的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"I am lavor_zl."和"I love you.",则删除之后的第一个字符串变成"amar_z".要求相对于第一个字符串的长度n时间复杂度为O(n). 解题思路:用一个bool数组保存是否在第二个字符串中出现的所有字符,数组下标表示字符,这个数组的长度为256,因为C/C++中字符总共有256个.遍历第一个字符串,用一个指针或数组下标access来表示当前访问第

指针与数组的对比

C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的. 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变. 指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存.指针远比数组灵活,但也更危险. 下面以字符串为例比较指针与数组的特性. 7.3.1修改内容 示例7-3-1中,字符数组a的容量是6个字符,其内容为hello\0.a的

C语言指针与数组的定义与声明易错分析

部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告诉编译器a这个名字已经在别的文件中被定义了,下面的代码使用的a是在别的文件中定义的.编译器是按文件分别编译的,当a被声明为char* a时,编译器理所当然的认为a是一个指针变量,在32位系统下占用4个byte,这4个byte存放的是地址,地址指向的空间存储的是char类型数据. 程序会返回SIGSEGV. 2

指针与数组的比较

C++/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的. 数组要么在静态存储区被创建(如全局数组) ,要么在栈上被创建.数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变.指针可以随时指向任意类型的内存块,它的特征是"可变" ,所以我们常用指针来操作动态内存.指针远比数组灵活,但也更危险. 下面以字符串为例比较指针与数组的特性: 1.修改内容 示例1中,字符数组a的容量是6个字符,其内容为 hello\0 .

【 C 】字符串常量

当一个字符串常量出现在表达式中时,它的值是个指针常量.编译器把这些指定字符的一份拷贝存储在内存的某个位置,并存储一个指向第一个字符的指针.但是,当数组名用于表达式中时,它们的值也是个指针常量.我们可以对它们进行下标引用.间接访问以及指针运算. 这些操作对于字符串常量是不是也有意义呢? 看看下面这个表达式是什么意思? "xyz" + 1 看上去像是一个垃圾!它好像是试图在一个字符串上面执行某种类型的加法运算. 但是,当你记得字符串常量实际上是一个指针常量时,它的意义就变得清楚了.这个表达