【问题标题】:(Xcode), first time Objective C for pointer study - do i need more libraries?(Xcode),第一次使用 Objective C 进行指针研究 - 我需要更多库吗?
【发布时间】:2017-06-14 19:08:10
【问题描述】:
(#) include < stdio.h >

int main () {

    int a = 10;
    int *p;

    p = &a;

    //Pointer arithmetic

    printf("Address p is %d\n", p);                       //error here
    printf("Value at address p is %d\n", *p);
    printf("Size of integer is %d bytes\n", sizeof(int)); //error  
    printf("Address p+1 is %d\n", p+1);                   //error as well
    printf("Value at address p+1 is %d\n", *(p+1));

    return 0;
}

好的,正如您在上面看到的,我正在研究 Objective-C 下的指针。 注意:这是我第一次使用 Mac Sierra 10.12.5 在 Xcode 版本 8.3.3 下学习。

我遇到的错误是,我引用:“格式指定类型'int',但参数的类型为'int *'”

我需要下载其他库还是我缺少它们的东西 - 以消除此错误?

非常感谢帮助以及帮助修复此错误的终端代码。

谢谢你 - 并道歉,这是我第一次使用堆栈溢出问题和网站。

【问题讨论】:

  • 错误信息很清楚。 p 的类型是 int*,但 %d 需要 int
  • 对不起....我不明白这个问题。消息不清楚吗?我相信它也会指出包含错误的行号......对吗?
  • 你不需要更多的库,但需要一本好的 C 书。阅读关于类型的章节。这并不是 ObjC 特有的。
  • 你自己找到的那个。 SO 提供了一个列表。去吧,找到它!
  • 使用%p 打印指针,不要忘记将其参数转换为void*sizeof 返回 size_tsize_t 的正确格式说明符是 %zu

标签: c pointers


【解决方案1】:
  • %d 是格式说明符。 %d 特别用于打印int 类型的参数。
  • p 不是 int,它是一个指向 int 的指针,输入 int*
  • 要打印指针,请使用%p 格式说明符。
  • *pint 类型,因为您取消了对指针的引用。对于此类参数,您应该使用%d

作为旁注,sizeof 的结果不是int,而是另一种称为size_t 的整数类型。要打印这个,你需要使用%zu

【讨论】:

  • 总的来说,不要花太多时间学习晦涩难懂的 stdio.h 库。它具有很多复杂性,并且通常也很危险。在专业生产代码中很少使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-20
相关资源
最近更新 更多