鱼C论坛

 找回密码
 立即注册
查看: 1558|回复: 7

C\C++ 指针问题 求大家解答

[复制链接]
发表于 2015-12-24 21:13:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 counting_stars 于 2015-12-24 21:42 编辑

下面是写的一个求最长字符串的程序
#include<iostream>
#include<cstdlib>
char ** max(char *arr[], int n);
int main(void)
{
        using namespace std;
        char *a[4] = {
                "qwer",
                "asdfg",
                "lkjnhgfa",
                "dsdsaf"
        };
        cout << "a[0] = " << a[0] << endl;
        cout << "a[1] = " << a[1] << endl;
        cout << "a[2] = " << a[2] << endl;
        cout << "a[3] = " << a[3] << endl;
        cout << "-------------------------------------" << endl;
        cout << "&a[0] = " << &a[0] << endl;
        cout << "&a[1] = " << &a[1] << endl;
        cout << "&a[2] = " << &a[2] << endl;
        cout << "&a[3] = " << &a[3] << endl;
        cout << "-------------------------------------" << endl;
        cout << "最长:" << *max(a, 4) << endl;
        cout << "地址:" <<  max(a, 4) << endl;
        system("pause");
        return 0;
}




char ** max(char *arr[], int n)                                        //返回最长的字符串
{
        char **temp = arr;
        for (int i = 1; i < n; i++)
        {
                if (strlen(*temp) < strlen(arr[i]))
                        *temp = arr[i];
        }
        return temp;
}


为什么从max中返回的指针用一次解除引用,得到的是char * 数组首元素地址而不是最长的那个字符串的地址呢?
QQ截图20151224211046.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-12-25 09:46:47 | 显示全部楼层

回帖奖励 +50 鱼币

#include<iostream>
#include<cstdlib>
char ** max(char *arr[], int n);
int main(void)
{
        using namespace std;
        char *a[4] = {
                "qwer",
                "asdfg",
                "lkjnhgfa",
                "dsdsaf"
        };
        cout << "a[0] = " << a[0] << endl;
        cout << "a[1] = " << a[1] << endl;
        cout << "a[2] = " << a[2] << endl;
        cout << "a[3] = " << a[3] << endl;
        cout << "-------------------------------------" << endl;
        cout << "&a[0] = " << &a[0] << endl;
        cout << "&a[1] = " << &a[1] << endl;
        cout << "&a[2] = " << &a[2] << endl;
        cout << "&a[3] = " << &a[3] << endl;
        cout << "-------------------------------------" << endl;
        cout << "最长:" << *max(a, 4) << endl;
        cout << "地址:" << max(a, 4) << endl;
        cout << "-------------------------------------" << endl;
        cout << "a[0] = " << a[0] << endl;
        cout << "a[1] = " << a[1] << endl;
        cout << "a[2] = " << a[2] << endl;
        cout << "a[3] = " << a[3] << endl;
        return 0;
}


char ** max(char *arr[], int n)                                        //返回最长的字符串
{
        char **temp = arr;
        for (int i = 1; i < n; i++)
        {
                if (strlen(*temp) < strlen(arr[i]))
                        *temp = arr[i];
        }
        return temp;
}
//你一不小心把原数组给改了,圣诞快乐!
51225.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-12-25 12:03:55 | 显示全部楼层
Delta 发表于 2015-12-25 09:46
#include
#include
char ** max(char *arr[], int n);

好像是这么回事  谢谢  圣诞节快乐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-20 19:36:10 | 显示全部楼层

回帖奖励 +50 鱼币

大神,为了50鱼币拼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-21 16:49:23 | 显示全部楼层
mobai
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-24 11:50:01 | 显示全部楼层

回帖奖励 +50 鱼币

看懵了..
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-25 08:40:59 | 显示全部楼层

回帖奖励 +50 鱼币

看看,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-4 09:50:25 | 显示全部楼层

回帖奖励 +50 鱼币

果然c指针很重要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 17:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表