user-0 提问: 菜鸟请教C语言printf的问题

回复:
user: user-1
content: 这个有什么疑问？因为你的是指针啊。当然会打印它的地址了

user: user-2
content: 推荐楼主阅读我的博客文章《参禅与悟道——浅谈人生》，重点参考我的座右铭：人必有所不为然后可以有为。

user: user-3
content: 引用 34 楼 ko1_1ok 的回复:[quote=引用 31 楼 afire22 的回复:] sizeof()  和 strlen()的区别一看就知道！基础没学好 好吧，那我也问你： 1、sizeof（数组名）的时候，返回数组的长度吗？ 2、strlen和sizeof都是库函数吗？ 3、sizeof是返回的值是在编译时决定的，还是在运行时决定的？  [/quote] 1.比如声明数组char a[20]，则sizeof（a）= 20，但strlen是根据有效字符来判断的，检测的是'\0'。如果声明的是字符串指针char* a = "hello";则sizeof(a)=4, strlen(a) = 5；数组名和指针有区别。因为数组的运算中，数组名还是要去调用指针的。 2.都是库函数 3.sizeof的值编译时就决定了

user: user-0
content: 引用 36 楼 afire22 的回复:[quote=引用 34 楼 ko1_1ok 的回复:] [quote=引用 31 楼 afire22 的回复:] sizeof()  和 strlen()的区别一看就知道！基础没学好 好吧，那我也问你： 1、sizeof（数组名）的时候，返回数组的长度吗？ 2、strlen和sizeof都是库函数吗？ 3、sizeof是返回的值是在编译时决定的，还是在运行时决定的？  [/quote] 1.比如声明数组char a[20]，则sizeof（a）= 20，但strlen是根据有效字符来判断的，检测的是'\0'。如果声明的是字符串指针char* a = "hello";则sizeof(a)=4, strlen(a) = 5；数组名和指针有区别。因为数组的运算中，数组名还是要去调用指针的。 2.都是库函数 3.sizeof的值编译时就决定了 [/quote] 1.#include <stdio.h>  void show_array(int arr[]) { 	printf("the value of sizeof was %d\n", sizeof(arr) );  }  int main() { 	int arr[4] = { 		1,2,3,4 	}; 	 	show_array(arr); 	 	return 0; }  2.错

user: user-4
content: ch指针指向字符串，这个字符串sizeof就是4，一个字是4个字节

user: user-2
content: 引用 28 楼 ko1_1ok 的回复:[quote=引用 25 楼 zhao4zhong1 的回复:] 奉劝楼主： 这辈子不用sizeof，完全不妨碍你成为软件开发高级工程师。  那你直接用01来完成编码，完全不妨碍你成为软件开发高级工程师 为什么要用编译器？还要发展计算理论做什么？[/quote] 你知道的太多了！ 啊——！……

user: user-0
content: 引用 32 楼 zhao4zhong1 的回复:[quote=引用 28 楼 ko1_1ok 的回复:] [quote=引用 25 楼 zhao4zhong1 的回复:] 奉劝楼主： 这辈子不用sizeof，完全不妨碍你成为软件开发高级工程师。  那你直接用01来完成编码，完全不妨碍你成为软件开发高级工程师 为什么要用编译器？还要发展计算理论做什么？[/quote] 你知道的太多了！ 啊——！…… [/quote] 小辈与你相差甚远

user: user-3
content: sizeof()  和 strlen()的区别一看就知道！基础没学好

user: user-0
content: 引用 31 楼 afire22 的回复:sizeof()  和 strlen()的区别一看就知道！基础没学好 好吧，那我也问你： 1、sizeof（数组名）的时候，返回数组的长度吗？ 2、strlen和sizeof都是库函数吗？ 3、sizeof是返回的值是在编译时决定的，还是在运行时决定的？

user: user-0
content: 引用 30 楼 l5250926 的回复:[quote=引用 27 楼 ko1_1ok 的回复:] [quote=引用 24 楼 l5250926 的回复:] 你哪里用%c了？？？？printf(“%d”,sizeof(ch))就是输出指针变量ch的字节数塞，不是4是什么 引用 10 楼 shtenlll 的回复:用“char”的话“%d”要改成%c 我回复的是十楼的话。。  好吧，那l5250926： 那我问你， 1、sizeof为什么不输出字符串所占字节数长度 2、sizeof是什么？ 3、sizeof是返回的值是在编译时决定的，还是在运行时决定的[/quote]   sizeof是求类型的大小的！ sizeof（指针）返回的是ch变量本身的大小，至于你说的那些，我不知道，我也没必要去知道 问问题的人应该保持谦和的态度，即使别人回答错了，也是一片好心，lz学的东西还有很多，不仅仅是技术上的。[/quote] 以事论事，从上面的回答来看，也不是所有回答者都是一片好心，那我也不客气。如果语气不合适你的话，还望海涵

user: user-2
content: 奉劝楼主： 这辈子不用sizeof，完全不妨碍你成为软件开发高级工程师。

user: user-5
content: 引用 27 楼 ko1_1ok 的回复:[quote=引用 24 楼 l5250926 的回复:] 你哪里用%c了？？？？printf(“%d”,sizeof(ch))就是输出指针变量ch的字节数塞，不是4是什么 引用 10 楼 shtenlll 的回复:用“char”的话“%d”要改成%c 我回复的是十楼的话。。  好吧，那l5250926： 那我问你， 1、sizeof为什么不输出字符串所占字节数长度 2、sizeof是什么？ 3、sizeof是返回的值是在编译时决定的，还是在运行时决定的[/quote]   sizeof是求类型的大小的！ sizeof（指针）返回的是ch变量本身的大小，至于你说的那些，我不知道，我也没必要去知道 问问题的人应该保持谦和的态度，即使别人回答错了，也是一片好心，lz学的东西还有很多，不仅仅是技术上的。

user: user-0
content: 引用 26 楼 u012514171 的回复:输出的是‘啊’（两个字节）的首地址  好吧，你给我解释下为什么吧

user: user-0
content: 引用 25 楼 zhao4zhong1 的回复:奉劝楼主： 这辈子不用sizeof，完全不妨碍你成为软件开发高级工程师。  那你直接用01来完成编码，完全不妨碍你成为软件开发高级工程师 为什么要用编译器？还要发展计算理论做什么？

user: user-0
content: 引用 24 楼 l5250926 的回复:你哪里用%c了？？？？printf(“%d”,sizeof(ch))就是输出指针变量ch的字节数塞，不是4是什么 引用 10 楼 shtenlll 的回复:用“char”的话“%d”要改成%c 我回复的是十楼的话。。  好吧，那l5250926： 那我问你， 1、sizeof为什么不输出字符串所占字节数长度 2、sizeof是什么？ 3、sizeof是返回的值是在编译时决定的，还是在运行时决定的

user: user-6
content: 输出的是‘啊’（两个字节）的首地址

user: user-5
content: 你哪里用%c了？？？？printf(“%d”,sizeof(ch))就是输出指针变量ch的字节数塞，不是4是什么

user: user-7
content: printf("the ch was:%08x\n", ch);

user: user-8
content: 这小东西都不会啊，真是的

user: user-9
content: ch是char *，sizeof(ch)即sizeof(char *)，32位平台下输出4表示char指针是4个byte大小。