三九宝宝网宝宝教育教学论文

C语言一维指针指向二维数组代码改错

01月06日 编辑 39baobao.com

[C语言二维动态数组问题]p不是二维数组,是指向指针的指针,而且p[i]这样的使用也是错误的。 指向指针的指针,意思就是说这个指针必须指向一个指针类型的地址,因为指针是一个变量,因此指针也有自已的地址。...+阅读

有以下几处要改,从调用函数说起:

首先void sortStr(char *s)改为void sortStr(char s[][20])原因在于,s是作为一个字符二维数组,需指定每行宽度。而你写的是字符的指针,顶多可以作为字符串(一维)的首地址而不是二维的。

strcmp(s+min,s+j)改为if(strcmp(*(s+min),*(s+j))>0),因为*(s+m)才是第m行的首地址。

strcpy(b,s+min);

strcpy(s+min,s+j);

strcpy(s+j,b);

改为:

strcpy(b,*(s+min));

strcpy(*(s+min),*(s+i));

strcpy(*(s+i),b);

理由同上,而且应该是将i处的与最小的交换。

sortStr(&a[0][0]);改为sortStr(a);

&a[0][0]得到的是char *类型,而真正需要的是char s[][]类型

以下为关联文档:

c语言关于定义二维数组的问题首先你要理解二维数组的真正含义,它的第一维就是一组数据的起始地址,第二维就是某组数据中的某个值.其次,你要知道a[][4]所表达的意思,是指二维数组a的每一维都是由4个元素组成...

关于c语言二维数组输出问题二维数组是由一维数组构成的,循环第一维输出就可以了—— #include "stdio.h" int main(int argc,char *argv[]){ char s[][30]={"12345","abcde","647hfsdjka","ABCD","","Type","Moon","cxt"}...

解释C语言二维数组代码问题楼主你好 其实你的代码很简单,只是有太多的循环嵌套,所以看起来复杂 #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a[5][5]; int i,j,m,n,t; pri...

C语言二维字符串数组的问题大牛进指用来存放字符的数组字符数组的定义用来存放字符量的数组称为字符数组。其定义的一般形式时: char 数组名[数据长度] 字符数组用于存放字符或字符串,字符数组中的一个元素存...

C语言的二维数组问题更正:选D,其他说明不变,只是没注意看题目,经♂Ёdīιу提醒才发现 静态声明的二维数组的存储是连续的 比如int a[2][2] = { {1,2}, {3,4} }; 那么它在内存里的实际存储其实就是1...

C语言上机题:二维数组问题#include const int inf=(1<<30); //这是表示无限大,不这么考究的话就直接赋值999999 #include int main(){ int arr[3][4]; int minRow[3] = {inf ,inf ,inf}; int maxCol[4]...

呵呵问一个C语言中二维数组的问题1. 一维数组存放相同的值,但是如果是矩阵,行列式等类型的,用二维的就比较方便了.至于字符数组,只是说明它里面存放的元素是字符而已. 2. 注意{{1},{2},{3}}里面的1,2,3是有{}的,...

c语言中二维数组输入问题#include<stdio.h> main() { char a[100][100]; int i,n; scanf("%d",&n);\\这里会留下一个回车在缓冲区。 getchar();\\吃掉上次留下的回车。 for(i=0;i<n;i++) { gets(a[i]); }...

c语言问题定义二维数组类楼主你好~ 修改了一下代码,请结合注释来阅读代码: #include<stdio.h> int main(void) { int n,i,j,d; d=0; static int a[10][10]; printf("Input n:"); scanf("%d",&n); for(i=0;...

推荐阅读
图文推荐