c语言指针数组C语言用静态指针数组

2021-03-07 08:27:58 字数 5058 阅读 6376

1楼:千锋教育

p是int类型指针,指向数组a的第1个元素即一个一维的数组首地址所以p[1]相当于a[0][1]所以printf("%d\n",p[1]);

输出2 。 int **pp =pa 是声明了一个指向pa的指针,而pa又是指向a首地址的int类型指针。pa指向的是a的第一维,pa[0] = a[0] ,pp[2][1]相当于a[2][1]而a数组的[2]中只初始化了[2][0]位置的7,那[2][1]位置就是默认的值0,所以printf("%d\n",pp[2][1]);输出0

2楼:匿名用户

void main()

,,};

int *pa[3]=;

int *p=a[0];

int **pp=pa; //这句什么意思??//定义了指向指针的指针变量

printf("%d\n",*a[1]);

printf("%d\n",*(*(a+1)+1));

printf("%d\n",*pa[1]);

printf("%d\n",p[1]); //为什么输出为2 ???//这里应该是输出了一个地址

printf("%d\n",pp[2][1]);} // pp不是地址吗,不加* 吗?//指针指向数组的首地址之后是可以当数组名用的。

c语言用静态指针数组

3楼:匿名用户

a有三个元素 分别

是a[0].n = 5

a[0].next = &a[1]

a[1].n=7

a[1].next = &a[2]

a[2].9

a[2].next = '\0' 也即是nullp=&a[0]

a p++->n

先取值,也就是p->n 等效于a[0].n 值为5b p->n++ 先取p->n再自加,自加与表达回式值无关,同a,一样答是5

c (*p).n++ 同样是先取值,再自加。 自加和表达式值无关,这个还是5

d ->的结合性更强。所以 这里是对p->n先自加,再取值,于是a[0].n先自加为6, 取值也就是6选d

4楼:兄弟连教育北京总校

static char *p

char const *p

char *p

三种zhi

第一种 指针p所指向

dao的内容内不可变,但是指针指容

向可变第二种 指针p所指向的内容可变,但是指针指向不可变第三种 定义一个指针p,两者都可变

const 常量定义

c语言的问题,指针数组

5楼:匿名用户

改变不了,字符串常量是改不了的,你可以试试char *p = "aaaaa";

p[1] = b;这样是改不了的

只能定义二维数组才可以改

char p[3][100] = ; 这样才可以改,不要问为什么,字符串常量就是不能改

6楼:千锋教育

直接让指针指向另一个字符串即可

p[0]="aaaa";

7楼:橙

这样定义指针指向的字符串是无法修改的。

数组––c语言

8楼:黑马程序员

main()

for(i=0;i<=10;i++)

printf("%5d",b[i]);

printf("\n");

9楼:

int a[2][3]=;这样是可以的,{}里边把要赋值的数都写上,如例子中数组元素一共有6个,但是你赋值的个数小于6个也是可以,没有值的 部分系统能够自动赋值为0

c语言中数组的合并

10楼:千锋教育

//两个数组合并,参考**:

#include "stdio.h"

int d=0; //用于记录数组c的大小,和数组c的输出类的一些操作

void main()

}if(leap==0) break; //经历了一个内for循环,leap==0的话,表明排序成功了,不需要接下来在排序了。}}

void prin(int *p,int n) //自定义函数 数组输出函数

printf("\n");

}void hb(int *o,int *p,int *q,int m,int n) //m为p指向数组的大小 n为q指向数组的大小 指针o指向合并的数组

else

if(i==m||j==n) break;

}if(i==m)

}if(j==n)}}

11楼:匿名用户

#include

void displayarray(int *parray, int nlen)

}void mergearray(int *parray1, int nlen1, int *parray2, int nlen2, int *parray)

else if (parray1[i] > parray2[j])else

}if (i == nlen1)

else

}int main()

;int array2 = ;

int array3[8];

mergearray(array1, 4, array2, 5, array3);

printf("merge array:\n");

displayarray(array3, 9);

return 1;}

c语言数组问题

12楼:千锋教育

你的**问题有以下几个:

1、min和max没有初始化

2、对于a[min]和a[max]没有做循环参考**如下:

#include

main()

printf("最大数是%d,下标是%d,最小数是%d,下标是%d\n", a[max], max, a[min], min);}

13楼:天雨下凡

#include

void main()

printf("min=%d,max=%d\n",min,max);}

c语言中的指针数组和数组指针的区别

14楼:黑丶雨

指针数组:数组里的每一个元素都是指针如*p[10],里面的 p[0] 到 p[9] 都是指针;

可参考:http://baike.

baidu.***/link?url=uejdrqvcduhtmc_8__wmhl4yufjtnwfeywiggkj_hr7qwixy7drozko_colwni0xcri3ygukjehcg9lwtfplha

数组指针:指向一个数组的指针,如 arr[10] 是一个数组, 让一个指针指向这个数组 p = arr;

访问时通过 *(p + n) 或 p[n] 访问元素值,n为元素索引值;

可参考:http://baike.

baidu.***/link?url=lolbh2c9lgzj6ybsymqll3gymyee3o7uggkoyc1w_h2y5uouttvs4ypunjffkca60isomg***fskmptyyukhvq

15楼:育知同创教育

int (*p)[4]; // 定义一个数组指针,指向含4个元素的一维数组,数组元素是int类型。

int *p[4]; // 定义一个指针数组,数组中每个元素是一个指针,指针指向**就要根据程序来定了。

判断数组指针与指针数组主要通过运算符的优先级来判断。

int (*p)[4]; // 由于( )的优先级高,说明p是一个指针,指向一个一维数组的指针

int *p[4]; // 由于[ ]的优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组

c语言数组与指针相关问题,谢谢

16楼:一颗程序猿

*p[1] 相当于 p[1][0], 值为4, 加上1就是5了

17楼:千锋教育

注意操作符的优先级,第三个*p[1]+1中最高,所以是p[1]即为34f9a8,再是*指针取内容操作符,即取出地址34f9a8的内容即为4,再+1所以得到5

c 语言指针的指针和二维数组的区别?

18楼:文帝宝宝

指针的指针和二维数组完全俩东西,二维数组是 一维数组的一维数组,元素是数组,所以可以隐式转化为int (*)[3],跟int **两回事,扩展到更多维或其它类型也是成立的,只能隐式转化为第一维的元素的指针

补充说明下隐式转化为指针,简单说就是这样(t是任意类型)

设有一个数组t a[10];

a的类型是“t [10]”,在做大多数运算的时候,都先隐式转化为“t *”类型,即t的指针

对于多维数组,可以看做是一个一维数组,数组的元素类型就是第二维开始的数组类型,比如:

t a[10][20][30];

是一个有10个类型为“t [20][30]”元素的数组,用**解释更清晰:

typedef t u[20][30];

u a[10];

跟上面的定义等价,所以a只能隐式转化为“u *”,“u *”后也就是“t (*)[20][30]”这个类型了,跟多级指针没关系,因此,多维数组不存在到多级指针的转化规则,强转只会导致问题

19楼:育知同创教育

二维数组由若干个一维数组组成在c语言中定义的二维数组实际上是一个一维数组,这个一维数组的每一个成员又是一个一维数组。

当变量作为函数的参数时,函数内修改的是形参,实参不变化;(swap(int a, int b))

当指针作为函数的参数时,函数内:若修改指针变量,实参指针指向变量不变。若修改指针指向,实参指针指向的变量变化。(swap(int *a, int *b))

c语言中数组名和指针变量的区别,C语言中数组名和指针的区别

1楼 销 数组名除了sizeof会返回数组大小,其他的实况下是相当于一个指针常量无区别的 指针常量也就是说,不能改变数组名的值,比如int a 10 a a a a 10等都是非法的 c语言中数组名和指针的区别 2楼 匿名用户 数组在当作参数传递时,可以当作指针 当然,参数传递相当于赋值操作,所以用...

c语言指针函数求大神指教

1楼 匿名用户 声明改成 float f int a int b float p int int float q int int 2楼 文霞yi莉 include include float area int a int b length int a int b float f int a int ...

C语言数组问题,C语言新手 数组问题

1楼 千锋教育 你的 问题有以下几个 1 min和max没有初始化 2 对于a min 和a max 没有做循环参考 如下 include main printf 最大数是 d,下标是 d,最小数是 d,下标是 d n a max max a min min 2楼 天雨下凡 include void...