【发布时间】: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_t,size_t的正确格式说明符是%zu。