★C语言 关于函数的一个小程序

★C语言 关于函数的一个小程序,第1张

你的理解不正确!当传递参数时,会生存一份拷贝,如该题中会生成两个拷贝指针,暂且将其定义为temp_px和temp_py,temp_px的指针类型为int (*)[4],是一个数组指针,指向二维数组x,temp_py就型雹是一个int * 类型的指针,指向数组卜冲帆y。当参数被传递时,a和b也就等价于temp_px,temp_py了,当在被调用函数中对a,b进行 *** 作时,也就是对主函数中的x和y *** 作了,即将二维数组x的对角线元素赋给数组y。当返回主判洞函数时,就会销毁拷贝指针。若被调用函数的形参不是指针类型的时候,假如都是int型,同样也会生成两个拷贝变量,被调函数中对形参的一切 *** 作只是对这两个拷贝变量 *** 作,并没有影响实参,当回到主函数时,拷贝变量被销毁,实参仍未改变!所以C++中,引入了“引用”,可以不生成拷贝,直接对某个主函数中的变量进行 *** 作,当然,这是题外话!

// 记得多给点分哦,很难写的。

// C

#include <stdio.h>

int strnmerge(char*str,int n,char const*s1,char const*s2){

    while(n >  0) {

        if(!(*s1) && !(*s2)) break

        if(*s1 && n > 0) {

            *str++ = *s1++

            --n

        }

        if(*s2 && n > 0) {

            *str++ = *s2++

            --n

        }

    }

    *str = '\0'

}

int main() {

    char s1[] 悔早= "aaaa"

    char s2[] = "bbbbbbbbb"

    char str[100]

    strnmerge(str, 10, s1, s2)

    printf("s1 = %s\n", s1)

    printf("s2 = %s\n", s2)

    printf("str = %s\n", str)

    return 0

}

// C++

#include <iostream>

using namespace std

int strnmerge(char*str,int 腔汪n,char const*s1,char const*s2){

    while(n >  0) {

        if(!(*s1) && !(*s2)) break

        if(*s1 && n > 0) {

            *str++ = *s1++

            --n

        }

        if(*s2 && n > 0) {

            *str++ = *s2++

            --n

        }

    }

    *str = '\0'

}

int main() {

    char s1[] = "aaaa"

    char s2[] = "bbbbbbbbb"

    char str[100]

    strnmerge(str, 10, s1, s2)

    cout << "s1  = " 伍前仔<< s1  << endl

    cout << "s2  = " << s2  << endl

    cout << "str = " << str << endl

    return 0

}

你的函数一团糟,if里面的表达埋敏式宽液唤就不可能成立!void find_number(char *string,int *number,int *n){int g=0,m=0,k=0,ifor(i=0string[i]i++)if(string[i]>47&&string[i]<慎凯58){g=g*10+(string[i]-48)k++}else if(k){number[m++]=g*n+=1g=0k=0}}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12497992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存