日期:2014-05-16  浏览次数:20667 次

UNIX环境高级编程第四章的一个程序例子里面的指针存储字符串问题
#include "apue.h"

int
main(int argc, char *argv[])
{

  int i;
  struct stat buf;
  char *ptr;

  for (i = 1; i < argc; i++) {
  printf("%s: ", argv[i]);
  if (lstat(argv[i], &buf) < 0) {
  err_ret("lstat error");
  continue;

  }
  if (S_ISREG(buf.st_mode))
  ptr = "regular";
  else if (S_ISDIR(buf.st_mode))
  ptr = "directory";
  else if (S_ISCHR(buf.st_mode))
  ptr = "character special";
  else if (S_ISBLK(buf.st_mode))
  ptr = "block special";
  else if (S_ISFIFO(buf.st_mode))
  ptr = "fifo";
  else if (S_ISLNK(buf.st_mode))
  ptr = "symbolic link";
  else if (S_ISSOCK(buf.st_mode))
  ptr = "socket";
  else
  ptr = "** unknown mode **";
  printf("%s\n", ptr);
  }
  exit(0);
}
这里的指针ptr没有用malloc等函数来分配内存,怎么就能够赋值字符串呢?

------解决方案--------------------
这个不是向指针指向的空间存储,而是让指针指向一个常量字符串