土沙拉 发表于 2017-12-26 10:27:03

关于第29课课后作业动动手

第0题
定义函数这里char *myitoa(int num, char *str);这个*myitoa 的*是什么意思?甲鱼老师讲的 类型名 函数名(参数列表) 格式*myitoa应该是个名字,但是去掉*会报错,不太明白,望大神指点


#include <stdio.h>

char *myitoa(int num, char *str);

char *myitoa(int num, char *str)
{
      int dec = 1;
      int i = 0;
      int temp;

      if (num < 0)
      {
                str = '-';
                num = -num;
      }

      temp = num;

      while (temp > 9)
      {
                dec *= 10;
                temp /= 10;
      }

      while (dec != 0)
      {
                str = num / dec + '0';
                num = num % dec;
                dec /= 10;
      }

      str = '\0';

      return str;
}

int main(void)
{
      char str;

      printf("%s\n", myitoa(520, str));
      printf("%s\n", myitoa(-1234, str));

      return 0;
}

BngThea 发表于 2017-12-26 10:33:04

表示这个函数的返回值是一个指针,前面是char
所以返回的是 char *
从函数的return来看,就是返回一个字符数组的地址

土沙拉 发表于 2017-12-26 10:51:12

BngThea 发表于 2017-12-26 10:33
表示这个函数的返回值是一个指针,前面是char
所以返回的是 char *
从函数的return来看,就是返回一个字 ...

void swap(int *x, int *y );

void swap(int *x , int *y)
{
      int temp;
      printf("swap互换前x=%d,y=%d\n",*x,*y);

      temp = *x;
      *x=*y;
      *y=temp;

      printf("swap互换后x=%d,y=%d\n",*x,*y);

这个是老师上课讲的例子,是因为没有返回值所以就不需要在函数名哪里加上*,这个理解对吗?谢谢

BngThea 发表于 2017-12-26 11:08:58

土沙拉 发表于 2017-12-26 10:51
void swap(int *x, int *y );

void swap(int *x , int *y)



返回值根据你的需求进行设置
之前你的代码中因为需要返回一个字符串,所以用char* 作为返回值类型

土沙拉 发表于 2017-12-26 11:10:04

BngThea 发表于 2017-12-26 11:08

返回值根据你的需求进行设置
之前你的代码中因为需要返回一个字符串,所以用char* 作为返回值类型

谢谢,明白了
页: [1]
查看完整版本: 关于第29课课后作业动动手