当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

C语言二维动态数组问题

更新:01-06 整理:39baobao.com
字体:

[C语言中关于数组名作为函数参数方面的问题]不知道你说的第2,4,5语句对应的是什么。。。。 帮你解释为什么是1: 1. 当你调用fun(a,b,s); 传进的参数实际上是:&a[0], &b[0], s变量的值(实际上也就是&a[0]) 2. 现在我们把fu...+阅读

p不是二维数组,是指向指针的指针,而且p[i]这样的使用也是错误的。

指向指针的指针,意思就是说这个指针必须指向一个指针类型的地址,因为指针是一个变量,因此指针也有自已的地址。比如int **p, *p1; int n=4; 那么正确的语法应该是p1=&n; p=&p1; 注意第二句,应该把指针p1的地址赋给p,你可以看到p1的地址&p1与p1的值p1是不相同的,p1的值等于的是n的地址,而&p1的地址是指针变量的地址。

int **p; 赋值就省了,我们来看p[0]表示的是什么,在C中[]数组运算符的功用是把指针所指向的地址偏移[]括号内的数值,然后再求值(也就是使用指针运算符),因此p[0]表示的是就是*(p+0);而p[1]也就是*(p+1); 而p是一个指向指针的指针,因此p的值也就是上面列举的p1的地址,你使用p1的地址再加上1,那么得到的结果是什么?这是不可预料的,因此使用p[]这样的语法会出问题。

对于**p中p与*p的区别,上面已讲了p的值就是p1的地址,而*p也就是p1的地址的值,也就是p1所指向的地址,就是变量n的地址,因此p1的地址与p1的值是不可能相同的,因此p与*p不可能相等,这不是二维数组

对于二维数组a[][]来讲a和*a是相等的,a指向的地址是&a[0],而*a就是指的a[0],二维数组a[0]指向的地址是&a[0][0],在二维数组中这几个值是相等的。

本文地址:https://www.39baobao.com/show/29_24660.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

在c语言中怎么将数组直接作为函数的参数比如 int fint a10在调用函要把数组作为函数的参数,在函数定义的时候,就要在参数列表设置指针,因为数组名就是数组的头指针,在调用时直接把数组名作为函数的参数就好了 比如 int fun(int *a) { //... } in...

关于c语言中数组作为函数参数的函数之间调用问题1、新建一个数组作为参数项目,如图所示: 2、添加一个array.c文件,如图所示: 3、包含stdio.h和stdlib.h头文件,如图所示: 4、输入main函数主体及返回值,如图所示: 5、定义一个数...

c语言编程指针数组作为函数参数#include #include int main() { void sort1(char **p1); void print(char **p2); static char *name[]={"zhang","wang","li","zhao","abe"}; sort1(name); print(name); return 0; }...

c语言数组作为函数参数怎样写如果一个函数的目的是要产生一个新的数组,那么最好的做法是在调用函数前就生成好这个数组,然后把这个数组作为参数传给函数,在函数中修改这个数组的值. 像你这种做法,在sum函数...

C语言数组问题歌咏比赛上有十个评委打分计分规则去掉一个1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include<stdio.h> intmain() { intn,a[1000]; while(scanf("%d",&n)!=EOF & n!=0) { intmax=1e-8,min=1e8; for(inti=0...

c语言求二维数组中所有元素的和遍历二维数组,逐个累加即可。 以二维数组为10行5列为例。 1 2 3 4 5 6 7 8 9 inta[10][5],i,j,s=0; for(i = 0; i < 10; i ++) for(j = 0; j < 5; j ++) scanf("%d",&a[i][j]);/...

请用C语言:求一个数组中所有元素的和在主函数中检验如果说,数组中保存的是数字,那简单,全部加起来。 如果说,数组中保存的是字符串型数字比如“100”,那你需要把字符串转成数字再相加。 或者还可以把所有字符拼接在一起。 1 2 3 4...

c语言二维数组里的元素可以相加吗可以的,只要你调出来 #include "stdio.h" int mian(void) { int s; int h1,h2,h3,l1,l2,l3; int ss[3][3]={0}; for (int i=0; i<3; i++) { for (int j=0; j<3; j++) { print("请...

关于C语言定义二维数组的问题以下能正确定义二维数组的是 -- 以下能正确定义 数组的是 (去掉二维两字)。 A) int a[ ][3]; -- 语法错,没带初始化,不允许用 [空白],不允许 数组大小不定。 B) int a[ ]={2*3} --...