c语言字符二维数组指针
A. c语言二维数组指针变量是什么,int (*p)[2]什么意思
二维数组指针变量形式如下:
类型名
(*数组名)[数组行数][数组列数]
如:int
(*p)[2][3];
//
定义一个int类型的二维数组指针变量,数组中每个元素都是一个指针
int
(*p)[2]表示定义一个数组指针,只是是一个一维的数组指针,数组中每个元素(共2个元素)都是一个int类型的指针变量,指针指向的地址就需要后续程序给出,不然会变为野指针。
B. C语言二维数组指针变量是什么int (*p)[2]什么意思
c语言比较灵活,C语言的指针更加灵活多变,int (*p)[2]是一个整型的指针型一维数组,表示两个元素,具体如下,
数组指针变量形式如下:
类型名 (*数组名)[数组行数][数组列数]
int (*p)[2]表示定义一个数组指针,指针指向的地址就需要后续程序给出,不然会变为野指针。
C. c语言中二维数组的指针如何表示
比如定义一个int型的二维数组,如下:
int **p;
或者
int p[MAX_ROW][MAX_LINE];
不同的是前者定义了一个int型二维数组的指针,编写器知道该指针的移动方式以int为单位,但此时该指针为NULL,即没有与内存中的物理单元进行对应。使用指针前需要用malloc()为该指针分配一段内存空间,内存空间的大小在malloc()的参数中指定,系统会为该指针分配一段空闲内存供该指针使用。或者将你的程序中其他int类型的指针赋值给该指针使其映射到内存物理单元。在程序结束或不在需要使用该指针时需要使用free()将该指针所映射内存释放。
后者在定义时为该指针分配了MAX_ROW*MAX_LINE个int大小的空间映射到内存,之后就可以直接使用了。
D. c语言,指向二维数组的指针变量
int
(*p)[4]这个就能当做二维数组的指针,第二维的长度得是4。
传递一维数组的时候,用的就是指向元素的指针,而不是指向数组的指针
int
a[10];
void
f(int
*p);
f(a);
int
b[10][10];
void
f2(int
(*p)[10]);
f2(b);
E. C语言关于二维数组指针表示方法
虽然说“首地址
=
array[0]=&array[0][0]”,这只代表他们的值相同,意义不同的。
array是二维指针变量,array[0]是一维指针变量,&array[0][0]是变量的地址。
*array
表示二维指针前加*
等于一维指针array[0],值还是以前的值,但是意义不同。
F. c语言里面怎么用指针表示二维字符数组
二维数组就是数组的数组,二维数组即数组的元素是一维数组的数组。那么我们要用指针指向二维数组,就是要定义一个指向数组的指针了。例如:
char str[3][10]; //定义了一个char型的二维数组
char (*pstr)[10]; //定义了一个指向char型的数组指针
pstr=str; //指针指向二维数组str
下面用pstr这个指针对二维数组进行赋值操作
int i;
for(i=0;i<3;i++)
scanf("%s",*(p+i)); //*(p+i)等价于str[i]
G. C语言中二维字符数组和指针的问题
char *s[100]表示数组s[100]是指针类型的,每个数组元素都相当于一个指针变量,都可以指向一个字符型变量;
char(*s)[100]表示s是一个指针变量,它指向包含100个字符型元素的一维数组;
str[]表示一个字符数组;这题中,str[i]=str[0],而gets函数表示得输入字符串,输入没有限制,直到输入换行符或者其他的结束标识,输入才结束;输入的字符串就存放在str[10][100]这个数组中,str[0]表示将输入的第一个字符存在数组的首位元素中,其他的字符按数组顺序存放。
H. C语言指向二维数组的指针
一、你的 float score 数组定义的是:一个3行、4列的二维浮点数组,数组的元素为浮点数。如果你换个格式书写就清晰了!
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
在调用的过程中,score 就是这个数组的首地址,指向的是浮点数组{65,67,70,60,}。score + 1 指向的是数组{80,87,90,81,}。
二、你的 float *p 定义的是:一个指向浮点数的指针。这个是一维的。
在调用的过程中,float 指向的是 xx。一个浮点数字。
两个的定义不同,所以参数传递过程中会出错。
三、你的 float (*p)[4] 定义的是:一个指向含有四个元素的浮点数组的指针。
在调用的过程中,float 指向的是{xxx,xx,xx,xx,},由四个浮点数组成的数组。
这时两个定义相同,所以参数传递过程中没有错误。
四、有个建议,你的程序书写格式不清晰,不利于你纠错和修改,应该尽量的清晰、明确,不建议使用简化方式定义参数。
作为一个软件工作者,应该尽量使程序流畅、格式清晰、易读,这是一个软件工作者最基本的职业素养。
格式化后,程序如下,会清晰很多:
#include<stdio.h>
void main()
{
void search (float (*p)[4],int n);/*这里的 float *p 好像有问题*/
float score[3][4]={{65,67,70,60,},{80,87,90,81,},{90,99,100,98}};
search(score,2);
}
void search(float (*p)[4],int n)/*这里的 float *p 好像有问题*/
{
int i;
printf("the score of No.%d are:\n",n);
for(i=0;i<4;i++)
{
printf("%5.2f",*(*(p+n)+i));
}
printf("\n");
}