objective-c - C/Objective-C printf 和 NSLog(指向 char 数组的指针)

标签 objective-c c printf nslog

关于 NSLogprintf 的快速问题:

我在 Xcode 中运行以下代码:

char array[10] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'};
char *arrayPtr = array;

NSLog(@"TEST:  %c", *(arrayPtr+9));

printf(@"TEST:  %c", *(arrayPtr+9));

除此之外,每一行都可以正常工作:

printf(@"TEST:  %c", *(arrayPtr+9));

错误:

Implicit conversion of an Objective-C pointer to 'const char *' is disallowed with ARC.

你能给我解释一下这里发生了什么吗?如果在这里进行简单的强制转换就可以正常工作?

NSLog 工作正常,没有任何错误。但是 printf 可以。我试过使用 __bridge cast,但它似乎并不令人满意。

有没有办法在不关闭 ARC 的情况下进行这项工作?

最佳答案

该错误与char 数组或算术无关。它告诉您,当您需要传递常规 C 字符串时,您正在将 NSString 作为格式字符串传递给 printf():

printf("TEST:  %c", *(arrayPtr+9));
//     ^ No @

关于objective-c - C/Objective-C printf 和 NSLog(指向 char 数组的指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21070111/

相关文章:

ios - UITableViewController 偶尔调整 TableView 的大小

ios - 如何从Bundle获取PNG文件的资源路径?

c - 编程 C : getting error when binding address and port to socket

c - fork() 导致为每个进程打印列标题

c - 我的推送函数总是将最新的元素推送到堆栈的每个值上

ios - UIEventSubtypeRemoteControlTogglePlayPause 什么都不做

objective-c - 如何将数据解析为数组或字典

c - 在 C 中异或问题

c - Emacs、C 宏反斜杠停止

c - 打印从包含特定单词的文件中读取的一行