百度面试题
2013-10-17 23:17 ripny 阅读(177) 评论(0) 收藏 举报1.char *str1="hello";
char str2[]="hello";
char str3[]={'h','e','l','l','o'};
问str1、str2、str3的区别。
答:*str1指向字符串常量,该常量存放于静态存储区;(如果有另外一个变量char *str4="hello";,则str1和str4指向同一块内存地址),并且,该内存区域不能被修改,即:*(str1+1) = 'x';这样的操作是非法的,会导致异常);
str2和str3都指向一个字符串,这个字符串存放于栈上,不同的是编译器会自动为str2添加'\0',也就是说sizeof(str2)-sizeof(str3)=1。同时,str2或str3指向的内存区域是可写的。
解释下面几个函数?
int (*a())();
int (*b[1])();
int (*c())[1];
int (*a(arg))(); 返回一个int(*)()型函数指针的函数(int(*)()为函数指针),这个函数参数为arg
int (*b[1])(); 一个数组,这个数组的每个元素都是一个int(*)()的函数指针
浙公网安备 33010602011771号