对字符串进行sizeof操作的时候,会把字符串的结束符“\0”计算进去的,进行strlen操作求字符串的长度的时候,不计算\0的。
数组作为函数参数传递的时候,已经退化为指针了,Func函数的参数str_arg只是表示一个指针,那个100不起任何作用的。
下面程序的输出结果为多少?
- voidFunc(charstr_arg[100])
- {
-
printf("%d\n",sizeof(str_arg));
- }
-
intmain(void)
- {
-
charstr[]="Hello";
-
printf("%d\n",sizeof(str));
-
printf("%d\n",strlen(str));
-
char*p=str;
-
printf("%d\n",sizeof(p));
- Func(str);
- }
输出结果为:6 5 4 4
对字符串进行sizeof操作的时候,会把字符串的结束符“\0”计算进去的,进行strlen操作求字符串的长度的时候,不计算\0的。
数组作为函数参数传递的时候,已经退化为指针了,Func函数的参数str_arg只是表示一个指针,那个100不起任何作用的。
2.typedef char *String_t; 和 #define String_d char * 这两句在使用上有什么区别?
答:typedef char *String_t 定义了一个新的类型别名,有类型检查。而#define String_d char * 只是做了个简单的替换,无类型检查,前者在编译的时候处理,后者在预编译的时候处理。
同时定义多个变量的时候有区别,主要区别在于这种使用方式String_t a,b; String_d c,d; a,b ,c都是char*类型,而d为char类型
由于typedef还要做类型检查。。#define没有。。所以typedef比#define安全。。
分享到:
相关推荐
java面试题目java面试题目java面试题目java面试题目java面试题目java面试题目
[消防文员面试题目]消防面试题目.pdf
经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目经典面试题目
迅雷面试题目迅雷面试题目迅雷面试题目迅雷面试题目迅雷面试题目迅雷面试题目
2018年 各大IT公司最新面试题目2018年 各大IT公司最新面试题目2018年 各大IT公司最新面试题目2018年 各大IT公司最新面试题目2018年 各大IT公司最新面试题目2018年 各大IT公司最新面试题目2018年 各大IT公司最新面试...
教师招聘考试典型面试题目-含答案
C#面试题目C#面试题目C#面试题目C#面试题目C#面试题目C#面试题目C#面试题目C#面试题目
Java常见笔试_面试题目深度剖析
经验面试题目经验面试题目经验面试题目经验面试题目经验面试题目经验面试题目
php面试题目答案php面试题pphp面试题目答案hp面试题目答案目答案php面试题目答phpphp面试题目答案面试题目答案案php面试题目答案php面试php面试题目答案题目答案
Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析Java常见笔试,面试题目深度剖析
ABAP面试题目ABAP面试题目ABAP面试题目ABAP面试题目
sql面试题目和答案sql面试题目和答案sql面试题目和答案sql面试题目和答案sql面试题目和答案sql面试题目和答案
c语言面试题目集.docx 面试精华 经典哦
面试题目(程序共享)
C语言面试题目汇总C语言面试题目汇总C语言面试题目汇总C语言面试题目汇总C语言面试题目汇总
Java基础知识面试题目
平安面试题目 java 最近面试题目 看看这个资料就可以方便过平安的面试了 好资料大家共享下 呵呵
面试题目面试题目面试题目面试题目面试题目面试题目