user-0 提问: return 下出现说明：应输入声明。

回复:
user: user-1
content: 引用 15 楼 qcx1221 的回复:[quote=引用 14 楼 zhao4zhong1 的回复:]  “找到问题出现的症状和解决问题” 都不如 学习和练习如何 “找到问题出现的症状和解决问题” 重要。  我发现通过C-free能够通过运行并能正确显示结果。 这个代表编译器使用的标准不同吗？[/quote]

user: user-0
content: 引用 14 楼 zhao4zhong1 的回复: “找到问题出现的症状和解决问题” 都不如 学习和练习如何 “找到问题出现的症状和解决问题” 重要。  我发现通过C-free能够通过运行并能正确显示结果。 这个代表编译器使用的标准不同吗？

user: user-1
content: “找到问题出现的症状和解决问题” 都不如 学习和练习如何 “找到问题出现的症状和解决问题” 重要。

user: user-0
content: 用了另一款C-free编译器，居然能够通过。 疑问依然在。

user: user-0
content: 引用 10 楼 Atom2004 的回复:我印象中下面这种写法只是某些特殊版本的编译器才能识别吧，应该不属于标准C的语法吧。  pt1 = (int [2]){10.20};  研究别人的写法，我觉得没有任何问题。但自己写代码的时候最好采用通熟易懂的写法。  这个不是别人的写法，而是C primer plus 书上的例题写法。 1、首先这个例题，我是在怀疑自己是不是有些许错误。 2、例题写法如果有问题，是错在哪个部分，他为什么这样写？ 3、还是想要追根究底。 4、既然楼上各位都对此写法有疑问，而我google了暂也没发现有这类疑问搜索到。

user: user-2
content: 10.20 应该改成10, 20  另外没刚过这种用法

user: user-3
content: 我印象中下面这种写法只是某些特殊版本的编译器才能识别吧，应该不属于标准C的语法吧。  pt1 = (int [2]){10.20};  研究别人的写法，我觉得没有任何问题。但自己写代码的时候最好采用通熟易懂的写法。

user: user-0
content: 引用 8 楼 qq423399099 的回复:不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！  实在话！ 但，初学者，就是因为这些疑问，在寻找问题的症状。

user: user-4
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！

user: user-0
content: 引用 6 楼 zhao4zhong1 的回复:偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。  学习了！ 不过为什么出现的这个问题还是弄不明白。  数组定义方式按：     int temp_1[2] = {10, 20};     int temp_2[2][4] = {{1,2,3,-9},{4,5,6,-8}};     int temp_3[6] = {4,4,4,5,5,5};     pt1 = temp_1;     pt2 = temp_2; 是较容易理解的。  但是例题中：     pt1 = (int [2]){10.20};     pt2 = (int [2][COLS]){{1,2,3,-9},{4,5,6,-8}};       total1 = sum(pt1,2);     total2 = sum2d(pt2,2);     total3 = sum((int []){4,4,4,5,5,5},6); 这种定义方式却行不通？

user: user-1
content: 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。

user: user-0
content: 引用 4 楼 user-5 的回复:我觉得 return 0有问题  return 0 处没问题，只是前面有个符号错了。 而更改之后17\18\19及return处问题均没有了，但还是有2楼的问题。

user: user-5
content: 我觉得 return 0有问题

user: user-0
content: 引用 2 楼 qq423399099 的回复: #include <stdio.h> #define COLS 4 int sum2d(int ar[][COLS], int rows); int sum(int ar[],int n); int main(void) { 	int total1, total2,total3; 	int * pt1; 	int (*pt2)[COLS];  	int temp_1[2] = {10, 20}; 	int temp_2[2][4] = {{1,2,3,-9},{4,5,6,-8}}; 	int temp_3[6] = {4,4,4,5,5,5}; 	pt1 = temp_1; 	pt2 = temp_2;  	total1 = sum(pt1,2); 	total2 = sum2d(pt2,2); 	total3 = sum(temp_3,6); 	printf("total1 = %d\n", total1); 	printf("total2 = %d\n", total2); 	printf("total3 = %d\n", total3);  	return 0; }  int sum(int ar[], int n) { 	int i; 	int total = 0; 	for(i=0;i<n;i++) 		total += ar[i]; 	return total; }  int sum2d(int ar[][COLS], int rows) { 	int r; 	int c; 	int tot = 0; 	for(r=0;r<rows;r++) 		for(c=0;c<COLS;c++) 			tot += ar[r][c]; 	return tot; }   这种方法定义数组是没问题。 而书上例题所在的定义数组方式却无法运行，这个是何问题？ 例题所在目录：10.9 复合文字  程序清单10.19

user: user-4
content: #include <stdio.h> #define COLS 4 int sum2d(int ar[][COLS], int rows); int sum(int ar[],int n); int main(void) { 	int total1, total2,total3; 	int * pt1; 	int (*pt2)[COLS];  	int temp_1[2] = {10, 20}; 	int temp_2[2][4] = {{1,2,3,-9},{4,5,6,-8}}; 	int temp_3[6] = {4,4,4,5,5,5}; 	pt1 = temp_1; 	pt2 = temp_2;  	total1 = sum(pt1,2); 	total2 = sum2d(pt2,2); 	total3 = sum(temp_3,6); 	printf("total1 = %d\n", total1); 	printf("total2 = %d\n", total2); 	printf("total3 = %d\n", total3);  	return 0; }  int sum(int ar[], int n) { 	int i; 	int total = 0; 	for(i=0;i<n;i++) 		total += ar[i]; 	return total; }  int sum2d(int ar[][COLS], int rows) { 	int r; 	int c; 	int tot = 0; 	for(r=0;r<rows;r++) 		for(c=0;c<COLS;c++) 			tot += ar[r][c]; 	return tot; }

user: user-0
content: 更新： #include <stdio.h> #define COLS 4 int sum2d(int ar[][COLS], int rows); int sum(int ar[],int n); int main(void) { 	int total1, total2,total3; 	int * pt1; 	int (*pt2)[COLS];  	pt1 = (int [2]){10.20}; 	pt2 = (int [2][COLS]){{1,2,3,-9},{4,5,6,-8}};  	total1 = sum(pt1,2); 	total2 = sum2d(pt2,2); 	total3 = sum((int []){4,4,4,5,5,5},6); 	printf("total1 = %d\n", total1); 	printf("total2 = %d\n", total2); 	printf("total3 = %d\n", total3);  	return 0; }  int sum(int ar[], int n) { 	int i; 	int total = 0; 	for(i=0;i<n;i++) 		total += ar[i]; 	return total; }  int sum2d(int ar[][COLS], int rows) { 	int r; 	int c; 	int tot = 0; 	for(r=0;r<rows;r++) 		for(c=0;c<COLS;c++) 			tot += ar[r][c]; 	return tot; }   自己找到一处小错误，第4点错误没有了！