我是 C 编程的新手,正在尝试处理指针和数组。我有一个菜鸟问题想请大家帮我理解。
我正在使用 Xcode 来运行我正在编写的一个非常简单的 C 程序。为了帮助我理解它是如何工作的,我从一个非常基本的程序开始,然后慢慢构建它以帮助学习。这是我的示例代码:
#include "stdio.h"
int main(){
int a[10] = {1,2,3,4,5,6,7,8,9,10};
int *p = &a[0];
printf("Address of first element of a = %d\n", p);
printf("Number of elements in array = %lu\n", sizeof(a) / sizeof(int));
}
在 Xcode 中,第一个 printf
行会产生一条警告,指出“格式指定类型‘int’,但参数的类型为‘int *’。
如果我能弄清楚为什么会发生这种情况以及我编写代码的正确方法是什么,我将不胜感激?这仍然编译并运行它会产生预期的结果。因此,虽然结果可能是正确的,但我个人需要了解这些警告的修复方法。
非常感谢!
最佳答案
#include <stdio.h>
使用 ""
用于创建自己的 .h 文件
此外,p 是指针,您必须取消对它的引用 printf("Address of first element of a = %d\n", *p);
请使用标志 gcc -W -Wall -Wextra file.c
编辑:如果您要打印指针的地址而不是它所指向的值,请注意 printf 中的 %p
标志: printf("a的第一个元素的地址 = %p\n", p);
关于c - 打印内存位置时 Printf 产生警告但仍在 xcode 中编译和运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46437418/