博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
return返回值问题和字符串问题
阅读量:2384 次
发布时间:2019-05-10

本文共 766 字,大约阅读时间需要 2 分钟。

在 C 语言中下面那个语句的结果是 1 ?

 

1.return 7&1;
2.char *p="hello"; return p == "hello";
首先,这两条语句的返回值都是1,因为如果return的表达式中有计算,需要先计算出结果。

对于char *p="hello",在常量区存放这个字符串,指针p指向这个字符串,也就是指针p中存放的是hello字符串的地址,而hello本身就代表着它的地址,所以这个比较结果是相等的,所以返回值是1。

如果改为char p[ ]="hello",那p=="hello"的值就是0。因为此时p指向了一段(新开辟的)长度为6字节的内存区域,存储的值是“hello”的拷贝(也就是说不是原来的常量字符串,只是将原来的字符串拷贝到这个先开辟的栈空间里)。

如果再修改为char p[ ]="hello";return(strcmp(p,“hello”));

返回值为0.(比较的是字符串中的内容,如果相等就返回为0)

如果s1小于s2,strcmp函数返回一个小于零的值。如果s1大于s2,函数返回一个大于零的值。如果两个字符串相等,函数就返回零。

char* f(char *str, char ch) {

    char *it1 = str; 这里定义的不是二级指针,就是一个一级指针

    char *it2 = str;

    while (*it2 != '\0') {

        while (*it2 == ch) { it2++; }

        *it1++ = *it2++;

     }

    return str;

}

void main(int argc, char *argv[]) {

    char *a = new char[10];

    strcpy(a, "abcdcccd");

    cout << f(a, 'c');

 

转载地址:http://bgfab.baihongyu.com/

你可能感兴趣的文章
Ubuntu(804) SSH远程管理服务器安装配置
查看>>
android源码
查看>>
使用Hadoop的JAVA API远程访问HDFS
查看>>
Linux下任务调度服务crond使用
查看>>
ZeroMQ的订阅发布(publish-subscribe)模式
查看>>
使用redis存储全球IP库
查看>>
Snappy Java API简介
查看>>
C/C++中正则表达式库RE2的使用
查看>>
HBase Java API(1.2.X)使用简介
查看>>
Java:实现比较接口时,应该全面的进行各种情况的比较
查看>>
python3.*下用mob_pbxproj自动化修改配置
查看>>
使用fir打包,测试跳转安装的坑
查看>>
版本号大小判断,适用规则(X.X.X.X........)
查看>>
关于Objective-C方法签名规则的说明
查看>>
libxml2.dylb 添加后找不到<libxml/tree.h> 头文件
查看>>
关于 [[self class] alloc]的理解
查看>>
Eclipse导入Web项目后代码不报错但项目报错(左上角有红叉)解决方案
查看>>
List、Set、数据结构、Collections
查看>>
Sudoku Solver
查看>>
Combination Sum
查看>>