常变量与符号常量的区别是什么? 什么是字符串常量?

常变量与符号常量的区别 

      先来看一段代码:

      要求:算出半径为10的圆的面积。

#include <stdio.h>
#define PI 3.14               //定义符号常量
int main (void)
{
   const double r=10;         //定义常变量
   double s;
   s=PI*r*r;
   printf("s=%lf",s);
   return 0;
}

    可以看出:二者出现的位置不同,常变量出现在函数体内,符号常量在函数体外。

                      获取的方式不同。

    还有两处不同:内存分配,define是宏定义,程序在预处理阶段将符号常量用define定义的内容进行了替换(在此之后,PI代表3.14)系统不为它分配内存。const定义的常变量,在程序运行时,系统需要为它分配内存空间。

                          编译时类型检查,define定义的符号常量,预处理时,直接进行替换。编译时不能进行数据类型检查。const定义的常变量,编译时进行严格的类型检验。

字符串常量

    定义:用双引号(" ")括起来的0个或者多个字符组成的序列。

    字符串常量是不可被修改的 。 

    存储:字符串常量以ASCII码的形式存储在内存中,每个字符串尾自动加一个'\0' 作为字符串结束的标志。'\0'在ASCII码表中也是一个字符,其 ASCII码值为0。

    例子:    "hello world"      存储在内存中时hello与world间的空格也要被存储起来,结尾加'\0'。空格与'\0'各占一个Byte。

                   字符串"a"与字符'a'不同,前者占2个Byte,后者占一个。

                   特别的,"123abc\n"       '\n'在反义字符中,其只占一个Byte。   

字符串函数 

     字符串函数也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数。

     C中有大量操作字符串的函数,使用时,需要包含头文件<string.h>

     下面介绍两种字符串函数:strlenstrcmp

strlen(s1)返回字符串s1的长度(不含'0')
strcmp(s1,s2)若s1=s2,返回0;若s1>s2,返回一个大于0的数;若s1<s2,返回一个小于0的数

     (strcmp形式)字符串的比较规则 :对两个字符串自左向右逐个字符相比(比较ASCII码值),直到出现不同的字符或'\0'为止。如果字符全部相同,则认为相等;若出现不相同的字符,以第一个不相同的字符比较结果为准。

                                        规律:若两个字符串都由字母组成,则按字母顺序(a~z)在后面的为“大”,小写字母比大写字母“大”

     例子:

#include <stdio.h>
#include <string.h>
int main (void)
{
  printf("strlen=%d\n",strlen("hello world"));
  printf("strcmp=%d\n",strcmp("my","hello world"));
  printf("strcmp=%d\n",strcmp("my","my"));
  printf("strlen=%d\n",strlen("123abc\n"));
  return 0;
}

     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值