鱼C论坛

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

[已解决]字符串与指针

[复制链接]
发表于 2022-3-7 20:26:35 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
        char nb(char *a,char *b);
        char *a="shdajsdg",b[40]="dadsdas";
        printf("%s\n\n%s\n",a,b);
        nb(a,b);
        //printf("%s\n",b);                  printf放这里可以实现打印为什么放下面的那个就不行了
        return 0;
}
char nb(char *a,char *b)
{
    while((*b++=*a++)!='\0');
        {
                ;
                  }          
        //printf("%s\n",b);               放这里打不出来
}
   
最佳答案
2022-3-7 21:19:15
无聊卷旅 发表于 2022-3-7 21:11
我是在copy,不是在赋值,我就想知道它们俩为什么不一样

b一直++,都指到 '\0' 后面去了,还可以输出?
#include <stdio.h>

void nb(char *a, char *b) {
    printf("==========%p\n", b);
    printf("%s\n", b);
    while((*b++ = *a++) != '\0');
    printf("==========%p\n", b);
    printf("%s\n", b);
}

int main() {
    //char nb(char *a, char *b);
    char *a = "shdajsdg", b[40] = "dadsdas";
    printf("%s\n\n%s\n", a, b);
    nb(a, b);
    // printf("%s\n",b); printf放这里可以实现打印为什么放下面的那个就不行了
    return 0;
}

/*
char nb(char *a, char *b) {
    while((*b++ = *a++) != '\0');
    //{ ; } ???
    // printf("%s\n",b);               放这里打不出来
    //return ???
}
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-7 21:00:15 | 显示全部楼层
char nb(char *a,char *b)
{
    while((*b++=*a++)!='\0');
        {
                ;
                  }          
        //printf("%s\n",b);               放这里打不出来
}
你想给一个指针赋值,直接这样就好,不必这么麻烦
b = a;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-7 21:11:49 | 显示全部楼层
大马强 发表于 2022-3-7 21:00
你想给一个指针赋值,直接这样就好,不必这么麻烦


我是在copy,不是在赋值,我就想知道它们俩为什么不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-7 21:19:15 | 显示全部楼层    本楼为最佳答案   
无聊卷旅 发表于 2022-3-7 21:11
我是在copy,不是在赋值,我就想知道它们俩为什么不一样

b一直++,都指到 '\0' 后面去了,还可以输出?
#include <stdio.h>

void nb(char *a, char *b) {
    printf("==========%p\n", b);
    printf("%s\n", b);
    while((*b++ = *a++) != '\0');
    printf("==========%p\n", b);
    printf("%s\n", b);
}

int main() {
    //char nb(char *a, char *b);
    char *a = "shdajsdg", b[40] = "dadsdas";
    printf("%s\n\n%s\n", a, b);
    nb(a, b);
    // printf("%s\n",b); printf放这里可以实现打印为什么放下面的那个就不行了
    return 0;
}

/*
char nb(char *a, char *b) {
    while((*b++ = *a++) != '\0');
    //{ ; } ???
    // printf("%s\n",b);               放这里打不出来
    //return ???
}
*/
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-7 21:45:33 | 显示全部楼层
人造人 发表于 2022-3-7 21:19
b一直++,都指到 '\0' 后面去了,还可以输出?


当*b++=*a++==‘0’时候不是为0,判断为假,停止运行。这样不对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-7 21:46:34 | 显示全部楼层
无聊卷旅 发表于 2022-3-7 21:45
当*b++=*a++==‘0’时候不是为0,判断为假,停止运行。这样不对吗

执行这个代码,看一下输出结果,能不能理解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-7 21:48:35 | 显示全部楼层
人造人 发表于 2022-3-7 21:46
执行这个代码,看一下输出结果,能不能理解

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

使用道具 举报

 楼主| 发表于 2022-3-7 22:10:18 | 显示全部楼层
人造人 发表于 2022-3-7 21:46
执行这个代码,看一下输出结果,能不能理解

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 08:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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