有个C语言问题弄不明白

 一个关于返回指针函数的问题,先看一下程序:

  
  
  
  
  1. #include<stdio.h> 
  2.  
  3. char *name[7]={"Monday" , "Tuesday" , "Wednesday" , "Thursday" , "Friday" , "Saturday" , "Sunday"}; 
  4. char *message = "wrong input!!!"
  5. char *week(int day){ 
  6.     if(day > 7 || day < 1){ 
  7.         return message; 
  8.     }else
  9.         return name[day-1]; 
  10.     } 
  11. int main(){ 
  12.     int d; 
  13.     char *p; 
  14.     printf("input a day of week:"); 
  15.     scanf("%d" , &d); 
  16.     p = week(d); 
  17.     printf("%s \n" , p); 

大体的意思是:输入一个整型的数,打印出一个字符串。

程序的*week函数就是一个返回指针的函数,return的是一个指针,一个指向字符串的指针,比如输入的数字是2,那么返回的就是指向Tuesday这个字符串的指针。

然后,主函数中,定义了一个指针变量p,把返回的指针的给了p,然后打印出来的应该是:指向Tuesday这个字符串的指针,但是为什么直接就打印了Tuesday字符串了??

你可能感兴趣的:(字符串数组)