C/C++对字符串常量的处理策略

本文通过C语言代码示例,详细解析了字符串比较的过程,展示了在不同文件中相同字符串常量如何分配内存,以及这如何影响字符串比较的结果。文章通过具体的代码运行结果,解释了在C语言中,即使字符串值相同,如果它们位于不同的文件中,其内存地址也可能不同,从而导致比较结果不一致的现象。
#include<stdio.h>
char *a="Hello";
extern void func();
int main()
{
    char *b="Hello";
    char *c="Hello1";
    if(a==b) 
      printf("a==b \n"); //两个指针指向同一块内存
    else
      printf("a!=b \n");
    if(a==c) 
        printf("a==c \n"); 
    else
      printf("a!=c \n");
    func();
    return 0;
}
#include <stdio.h>
extern char *a;
char *e="Hello";
void func()
{
    char *f="Hello";
    if(f==a) 
      printf("a==f \n");
    else
      printf("a!=f \n ");
    if(f==e) 
      printf("f==e \n");
    else
      printf("f!=e \n");
}

 最终结果:

a==b 
a!=c //前两个说明,同文件,同值的常量指向同一块内存
a!=f //1,3说明,同值不同文件,内存块不同

f==e//与1,2同样的验证

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值