
正文
c语言指向常量字符串,c语音字符串常量
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言中字符串常量有哪些?
常量有整型常量、浮点型常量、字符型常量及字符串常量。 ‘字符串常量定义是指定义符号常量,用一个标识符来代表一个常量,通过宏定义预处理指令来实现。
C语言中常量可分为直接常量和符号常量。直接常量是指直接用具体数据表达的一种形式,直接常量又分为整型常量、实型常量、字符常量和字符串常量;符号常量则是指用C语言标识符定义的常量。
符号常量是使用#define定义的常量,也称为宏常量。它们可以在程序中像普通变量一样使用,但其值在整个程序中是不变的。符号常量一般用大写字母表示,例如#define PI 14159。
C x这里M 、C是符号常量。字符常量是当个确定的字符,加单引号表示。字符串常量是由单个字符组成的一个字符串,加双引号表示。字符串常量由字符常量组成。
相关问答
Q1: C语言中指向字符串常量的指针问题
注意:你这个问题是个特例,在C语言里实际上是可以修改的,且在 TC 下可以通过。
指向字符串常量的话,这段常量字符串是存储在静态存储区的,内容不能修改。
如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。
第一个:char *p = 123456;char *s = asdghh;s = *p;你这个之所以会错,是因为指针s指向的是常量字符串 asdghh 而*s=*p相当于改变常量字符串的值,常量是不能改变的,而且常量也不能做左值,所以出错。
类似“hello”这类的变量实际是常量字符串,位於程序的代码段,char *ptr=hello表示定义字符指针ptr、并将字符串“hello”的首地址赋值给ptr,如此便可通过ptr引用“hello”,当然是只读引用了。
char *s = \ta\018bc; 这条语句的意思是:定义字符指针变量s的同时,用字符串常量\ta\018bc对它初始化。实际上,是把字符串中第一个字符的地址赋给指针变量s。
Q2: c语言中字符串常量与指针的关系.
1、第一个:char *p = 123456;char *s = asdghh;s = *p;你这个之所以会错,是因为指针s指向的是常量字符串 asdghh 而*s=*p相当于改变常量字符串的值,常量是不能改变的,而且常量也不能做左值,所以出错。
2、abcd是一个字符串,在内存中肯定有自己的地址空间,char *a = abcd就是把这个地址空间赋给a保存的。abcd本身就是一个地址,因为在c语言中字符串就是对应于一个指针。
3、错误原因:a、b是字符指针,它们指向常量字符串。当你把它们作为参数传递给函数copy_string时,函数所做的操作就是改变b所指向的字符串的值,所以错误。
4、注意:你这个问题是个特例,在C语言里实际上是可以修改的,且在 TC 下可以通过。
Q3: C语言里为什么字符指针变量指向的字符串常量中的内容是不可取代的?_百...
1、指向字符串常量的话,这段常量字符串是存储在静态存储区的,内容不能修改。
2、本身默认的就是一个字符串常量,他的值不容修改,p只是一个指针,执行该字符串的首地址,对该地址的值指向的地址空间的值的改变也是不允许的。
3、第7行有问题:字符指针变量指向的字符串常量中的内容是不可以被取代的。所以这条语句是非法的。
4、如果输入12345,那么p指向1,即p中存放着1的地址。没有字符串的指针和指针指向的内容不能修改一说。
5、const * ptr2 = stringprt1; 其中,ptr2 是一个指向字符串常量的指针。ptr2 所指向的字符串不能更新的,而 ptr2 是可以更新的。 因此, *ptr2 = x; 是非法的,而: ptr2 = stringptr2; 是合法的。
6、第一个:char *p = 123456;char *s = asdghh;s = *p;你这个之所以会错,是因为指针s指向的是常量字符串 asdghh 而*s=*p相当于改变常量字符串的值,常量是不能改变的,而且常量也不能做左值,所以出错。
c语言指向常量字符串的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语音字符串常量、c语言指向常量字符串的信息别忘了在本站进行查找喔。







