字符串常量_c语言入门自学零基础

字符串常量_c语言入门自学零基础【1】字符串常量有哪些特性? 字符串常量之所以称之为常量,因为它可以看作是一个没有命名的字符串且为常量。存储于静态数据区。 常量就意味着它具有“只读”属性,不允许被修改。 静态数据区,是相对于堆、栈等动态数据区而言的。 静态数据区存放的是全局变量和静态变量。 全局变量分为常量和一般变量。 因为字符串

字符串常量_c语言入门自学零基础"

【1】字符串常量有哪些特性?

字符串常量之所以称之为常量,因为它可以看作是一个没有命名的字符串且为常量。存储于静态数据区。

常量就意味着它具有“只读”属性,不允许被修改。

静态数据区,是相对于堆、栈等动态数据区而言的。

静态数据区存放的是全局变量和静态变量。

全局变量分为常量和一般变量。

因为字符串常量不允许进行修改,放在静态内存区会提高效率。

而且其不可改变的性质与静态变量相当类似。更准确表述:存储在常量数据区。

【2】字符串常量与字符常量有何区别?

(1)字符常量由单引号括起来,字符串常量由双引号括起来。

示例代码如下:

1 char  ch='a'; 2 char *str="abcedef";

(2)字符常量只能是单个字符,字符串常量则可以含一个或多个字符。

(3)可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。在C语言中没有相应的字符串变量。

示例代码如下:

1 char ch; 2 ch='s'; 3 ch="s";//error!!

(4)字符常量占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。

增加的一个字节中存放字符”\0″(ASCII码为0)。这是字符串结束的标志。

例如:字符串 “C program”在内存中所占的字节为:C program\0。

字符常量’a’和字符串常量”a”虽然都只有一个字符,但在内存中的情况是不同的。

‘a’在内存中占一个字节,可表示为:a;

“a”在内存中占二个字节,可表示为:a\0 。

(5)C语言规定,每一个字符串总是以“\0”作为字符串的结束标志。

 C语言中的字符串用字符数组来表示。

示例代码如下:

char str[]="abcdefghijk";

(6)当一个字符串常量出现在表达式中,它的值实质是个指针常量。

编译器把这些指定字符的一份拷贝存储于内存的某个位置,并存储一个指向第一个字符的指针。

而且,当数组名用于表达式中时,它们的值也是指针常量。我们可以对它们进行下标引用、间接访问、指针运算。

对于绝大多数程序员而言,它看上去象垃圾。它好象试图在一个字符串上面执行某种类型的加法运算。

但是,当你记得字符串常量实际上是个指针时,它的意义就变得清楚了。这个表达式计算“指针值加上1”的值。

它的结果是个指针,指向字符串中的第二个字符。

为了更充分的理解内容。请参照示例代码:

 1 #include<iostream>
 2 using  namespace std;  3 
 4 void main()  5 {  6     char *s="abcdefgh";  7     //*s='p'; //编译顺利,运行崩溃..
 8     cout<<"abcde"+1<<endl;    //bcde
 9     cout<<*"abcde"<<endl;     //a
10     cout<<*("abcde")<<endl;   //a
11     cout<<s<<endl;               //abcdefgh
12     cout<<"abcdefgh"+7<<endl;    //h
13     cout<<"abcdef"[3]<<endl;     //d
14     cout<<*("abcdef"+4)<<endl;   //e
15     cout<<*"abcde"+2<<endl;      //99
16     cout<<"c"<<endl;             //c 
17     cout<<'c'<<endl;             //c
18     cout<<(int)'c'<<endl;        //99
19     ///////////////////////
20     int anum='a'; 21     cout<<anum<<endl;            //97
22     
23     char ach='a'; 24     cout<<ach<<endl;             //a 25     //字符数组
26     char ch[]="abcdefghijk"; 27     cout<<ch<<endl;              //abcdefghijk
28     cout<<ch+2<<endl;            //cdefghijk
29     
30     char str1[]       = "abc"; 31     char str2[]       = "abc"; 32     const char str3[] = "abc"; 33     const char str4[] = "abc"; 34     const char* str5  = "abc"; 35     const char* str6  = "abc"; 36     char* str7  = "abc"; 37     char* str8  = "abc"; 38     
39     cout << ( str1==str2 ) << endl; // 输出0
40     cout << ( str3==str4 ) << endl; // 输出0
41     cout << ( str5==str6 ) << endl; // 输出1
42     cout << ( str7==str8 ) << endl; // 输出1
43     
44 }

【3】神秘函数如何实现?

利用字符串常量的特性,根据参数值的一定比例打印相应数量的星号。它比传统的循环方案要容易的多,效率也高得多。

示例代码如下:

 1 #include<stdio.h>
 2 using  namespace std;  3 void  mystery(int n)  4 {  5     n+=5;  6     n/=10;  7     printf("%s\n","***********"+10-n);  8 }  9 void main() 10 { 11     mystery(1); 12     mystery(10); 13     mystery(20); 14     mystery(30); 15     mystery(40); 16     mystery(50); 17     mystery(60); 18     mystery(70); 19     mystery(80); 20     mystery(90); 21     mystery(100); 22 } 23 
24 //Out print
25 /*
26 * 27 ** 28 *** 29 **** 30 ***** 31 ****** 32 ******* 33 ******** 34 ********* 35 ********** 36 *********** 37 */

【4】整型值转换为字符输出如何实现?

示例代码如下:

 1 #include<stdio.h>
 2 using  namespace std;  3 
 4 void binary_to_ascii(unsigned int value)  5 {  6     unsigned int quotient;  7     quotient = value/10;  8     if(quotient!=0)  9  binary_to_ascii(quotient); 10     putchar(value % 10 + '0'); 11 } 12 
13 void main() 14 { 15     int a=100; 16     binary_to_ascii(a);  //100
17 }

【5】把十进制数据转换为十六进制如何实现?

示例代码如下:

 1 /*
 2 *把十进制数转换为十六进制  3 */
 4 
 5 #include<stdio.h>
 6  using  namespace std;  7 
 8 void  binary_to_ascii(unsigned int value)  9 { 10     unsigned int quotient; 11     quotient = value/16; 12     if(quotient!=0) 13  binary_to_ascii(quotient); 14     putchar("0123456789ABCDEF"[value % 16]); 15 
16 } 17 
18 void main() 19 { 20     binary_to_ascii(10); 21     binary_to_ascii(20); 22     binary_to_ascii(30); 23     binary_to_ascii(40); 24     binary_to_ascii(16); 25     binary_to_ascii(17); 26     binary_to_ascii(100); 27 } 28 //运行结果如下:
29 /*
30 A 31 14 32 1E 33 28 34 10 35 11 36 64 37 */

 

 

今天的文章字符串常量_c语言入门自学零基础分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/47757.html

(0)
编程小号编程小号
上一篇 2023-09-04
下一篇 2023-09-04

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注