int main(int argc, char const *argv[])
{
// 问题一:问什么第一种可以,第二种却不行呢?
char buf[]={'t','e','\0'};
printf("%s\n",*(buf+1)); // 没有输出结果
int arr[3]={1,2,3};
printf("%d\n",*(arr+1));// 输出2
// 问题二:问什么第一种可以,第二种却不行呢?
int a=12;
int *p1=&a;
printf("%d\n",*p1); // 输出12
char buf[]="test";
char *p=buf;
printf("%s\n",*p); // 没有输出结果
}
printf输出字符串需要传入的参数应是你想要开始的地址,把buf+1前面的解引用(*)去掉即可
而*(buf+1)传递的是值应该用于输出字符的情况,如printf("%c\n",*(buf+1));
第二个同理;
推荐一本c语言语法书,c prime plus ,对于这种基本语法解释的相当清楚