我是C语言的新学习者,我的问题是关于指针的。据我所学和搜索到的信息,指针只能存储其他变量的地址,而不能存储实际的值(如整数或字符)。但在下面的代码中,char指针c实际上存储了一个字符串。它可以正常执行并输出“name”而没有错误。
#include <stdio.h>
main()
{
char *c;
c="name";
puts(c);
}
有人能解释指针如何在没有任何内存或如果创建了内存,则在哪里创建以及可以创建多大的情况下存储字符串吗?
我尝试使用整数类型指针进行操作。
#include <stdio.h>
main()
{
int *c;
c=10;
printf("%d",c);
}
但是它报错了
cc test.c -o test
test.c: In function ‘main’:
test.c:5:3: warning: assignment makes pointer from integer without a cast [enabled by default]
c=10;
^
test.c:6:2: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
printf("%d",c);
^
指针存储变量的地址,那么为什么整数指针与字符指针不同?
如果我对指针有所遗漏,请解释一下。
“name”
是一个指针(技术上是一个数组),因此可以存储在指针中。10
是一个整数,因此不能存储在指针中。我认为你的困惑源于不太明显的事实,即字符串字面值实际上具有指针类型。 - ApproachingDarknessFish