【发布时间】:2020-05-09 08:57:51
【问题描述】:
据我了解,pName 应该是一个指针,其值是 char name 的内存位置的值。
这意味着,当我在第二个printf 语句中取消引用指针变量pName 时,它应该只打印字符串“Cameron”。但它没有!有人可以帮助这个菜鸟吗:)?
#include <stdio.h>
#include <stdlib.h>
int main()
{
char name[] = "Cameron";
char * pName = &name;
printf("Printing string of characters: %s\n", name);
printf("Dereferencing pointer and printing string: %s\n", *pName);
printf("Printing pointer: %p\n", &name);
printf("Printing pointer another way %p\n", pName);
return 0;
}
【问题讨论】:
-
"%s"需要一个指向字符串的指针。不是char。您的编译器可能已经告诉您“参数与格式说明符不匹配...” -
@Gerhardh 在此之前,编译器应该在
char * pName = &name;处给出转换指针类型的警告 -
@DavidRanieri 为什么你删除了
&并写了printf("Printing pointer: %p\n", (void *)name);? -
@MikeCAT 因为
%p说明符必须与void *的强制转换一起使用 -
@DavidRanieri
printf("Printing pointer: %p\n", (void*)&name);也是有效的,所以我认为这不是&被丢弃的原因。
标签: c arrays pointers implicit-conversion c-strings