
正文
c语言指针作为数组,c语言指针数组经典题目详解
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言的指针可以看做数组不
可以又不可以。指针式可以作为左值的,数组名则不能。
指针数组:就是存储指针的数组。数组指针:就是指向数组的指针。指针:本质就是一个int型变量,含义:一个内存地址。举例:int *p[10] 指针数组。原因:因为[的优先级比*高,p先和[结合,所以是指针数组。
数组是用指针方式实现的,但数组值是一个常量,即不能改变数组的首地址,而指针是一个变量,可以改变它的值;如:数组 a和指针p,p=a+1;是合法的,但a=a+1;是不合法的。
数组指针,对于一维数组来说就是数组名 故对于一维数组来说,数组名是第一个元素的指针,而元素本身也是指针,故数组名是指向指针的指针。
区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针。
相关问答
Q1: 为什么指针变量可以直接当数组名来用
1、简单的说,使用指针的时候,*(p+1)和p[1]都是合法的。它们语义上没有区别。因此不存在*(p+1)可以p[1]不可以的情况。
2、因为函数f的形参是一个类型为int的指针变量,所以调用f时,可以将数组名arr作为实参传给形参p。
3、你的数组没有学好啊。。例如数组char a[10],那么a的类型为char 你这里的指针a其实是指向字符串的首地址,而在C语言里面没有字符串类型,字符串是以字符数组的形式存储。
Q2: C语言怎么用指针代替二维数组
设p是指向二维数组a[m][n]的指针变量,则有:int* p=a[0];//此时P是指向一维数组的指针。P++后,p指向 a[0][1]。
//fp应该是个数组指针,这样就能动态的保存数据。
两种方法:转化为一维数组申请 先申请全部行首指针,再按行逐行申请 a=(int *)malloc(sizeof(int),(unsigned)m*n);使用的时候就和一般的二维数组一样。
主函数 int **a;int r,c;定义其他变量和打开文件相同。fscanf(fp, %d%d,&r,&c);if(r=0 || c=0) return ;a=create(r,c);if(a==NULL) return;后续读取部分相同。结尾加上内存的释放。
首先我们打开电脑里的C语言软件,新建一个工程和.c文件,输入头文件和主函数。然后我们输入图示代码初始化数组,定义变量类型。然后我们输入图示代码用for语句实现数组的访问。然后我们输入图示代码进行输出。
Q3: C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组...
1、数组指针定义int(*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。
2、(1)声明一个数组,声明时用常量表达式指定数组维数,然后可以用数组名访问数组元素。(2)声明一个变长数组,声明时用变量表达式指定数组维数,然后用数组名来访问数组元素。
3、(1)程序中c1,c2被定义为字符数组并初始化;c3是一个指针变量,指向字符串所在字符数组的首地址。(2)语句char *pArray[3];定义了三个元素的指针数组pArray,数组元素是指向char型变量或数组的指针变量。
4、//函数指针的数组定义函数指针是指向函数的指针变量。函数指针有两个用途:调用函数和做函数的参数。
关于c语言指针作为数组和c语言指针数组经典题目详解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






