【问题标题】:Probelm with pointers指针问题
【发布时间】:2022-01-04 11:42:58
【问题描述】:

我正在编写一个较小的程序来使用带指针的函数显示两个值。和视频https://www.youtube.com/watch?v=qG01z8unrU4一样

#include <stdio.h>
int pointers (int i){
    int *p, *q;
    p=&i;
    q=p;
}

 int main(){
    printf("%d %d", pointers(10));
    return 0;
}

它应该显示 10 10。我不知道在函数指针的末尾放什么(返回什么??)。

【问题讨论】:

  • 1) pointers() 不返回任何内容,2) printf 模板需要两个输入,但您只提供一个。可能还有更多。
  • 指针函数返回的任何内容都不能满足格式字符串中的两个%d
  • 函数只能返回一个值。要返回一个 int 添加 return *q; 将打印更改为 printf("%d %d", pointers(10), pointers(10));
  • 整个pointers 函数是......毫无意义(双关语)。用你自己的话解释你认为它应该做什么。
  • "...和视频的一样。" 不是不一样,只是有点相似。在视频中没有什么都不做的函数,没有使用什么都不返回的函数的返回值,也没有错误使用 printf。与其在 youtube 上随机学习教程,不如买一本书。

标签: c pointers


【解决方案1】:
it should show 10 10

不,不应该。这里有很多未定义的行为。

  1. 您的函数必须返回int 值。您没有返回语句。这是未定义的行为 - 您无法预测将返回什么
  2. 您的printf 需要格式后的2 个参数。你只提供一个。这是另一个 UB。

您的程序将做什么是未定义的。一切皆有可能

作为附加说明,您的指针 adssigments 无效,将由编译器优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多