c语言数组不可以当成指针使用,但是指针可以当成数组使用吗?

作者&投稿:再匡 (若有异议请与网页底部的电邮联系)
C语言指针变量可以当做数组吗?~

比如说定义int *w
然后下边就可以用作w[i]
这么对吗?
对的话在什么情况下可以这么使用?

答:不可以,因为w这时还是野指针。只有这样
int *w,a[44];
w=a;
操作后才可以,操作w就与操作a一样了。而且,操作指针比直接操作数组名更方便,因为指针是变量,可以++、--,而数组名是常量,不能++、--。
  你追问的那个红框框中的问题不是指针与数组名的问题,而是“形式参数”与“实际参数”的问题。写函数定义的()中的前面带类型说明符的变量名叫形式参数。形参与实参相比,最大的特点就是不用担心没有赋值或初始化就拿来引用,它们是留着调用时才用实参自动赋值的。而实参则不然,没有赋值时拿来做右值,就会被警告“引用了没有初始化的变量”,而且因为初值是随机的而结果一般都是错误的。

数组必须是连续空间,并且空间长度受限,而指针可以指向任意空间,并且可以用指针挂载无数个结点,数组是无法代替指针的。
C语言就是个玩指针的游戏,楼主还是要把指针学好啊。

可以



指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。

数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。

比如说定义int *w

然后下边就可以用作w[i]

这么对吗?

对的话在什么情况下可以这么使用?

答:不可以,因为w这时还是野指针。只有这样

int *w,a[44];

w=a;

操作后才可以,操作w就与操作a一样了。而且,操作指针比直接操作数组名更方便,因为指针是变量,可以++、--,而数组名是常量,不能++、--。

你追问的那个红框框中的问题不是指针与数组名的问题,而是“形式参数”与“实际参数”的问题。写函数定义的()中的前面带类型说明符的变量名叫形式参数。形参与实参相比,最大的特点就是不用担心没有赋值或初始化就拿来引用,它们是留着调用时才用实参自动赋值的。而实参则不然,没有赋值时拿来做右值,就会被警告“引用了没有初始化的变量”,而且因为初值是随机的而结果一般都是错误的。




C语言里数组元素是什么
例如 a[0]为 数组a[10]的第一号成员元素。这里有点要注意的是,数组元素下标值是从0开始的,即你定义a[10],则他的成员数为a[0]到a[9].千万不要把a[10]也当成了他的成员了。至于元素,例如你定义一个变量 int a;那么 你可以让 a 成为数组 a[10]的一个元素。如果你要用到很多变量...

请问在C语言中数组可以作为返回值吗
返回数组是不行的(用malloc分配倒是可以但不安全),但你的要求却可以达到,那就是用指针 比如,输入a,返回b和c:void fun(int a, int *pb, int *pc){ pb = a - 1;pc = a + 1;} int main(){ int a = 1;int b, c;fun(a, &b, &c);\/\/输入a返回b=a-1,c=a+1两个...

c语言数组第一个元素是不是就是指针类型的?
不是,数组名表示数组内第一个元素地址可以当指针使用,但数组内元素视定义类型而定

请问在C语言中数组可以作为返回值吗
返回数组是不行的(用malloc分配倒是可以但不安全),但你的要求却可以达到,那就是用指针 比如,输入a,返回b和c:void fun(int a,int pb,int pc){ pb = a - 1;pc = a + 1;} int main(){ int a = 1;int b,c;fun(a,&b,&c);\/\/输入a返回b=a-1,c=a+1两个结果 printf(...

C语言的指针可以看做数组不
可以又不可以。指针式可以作为左值的,数组名则不能。即 char b[] = "123";char *a = b; a++;正确 b++;错误 还有在数组名作为参数的时候也要注意,别溢出

在C语言中,数组名是一个( )常量,不能对这进行( )和( )运算,由( )代表...
指针 自增 自减 第四个空题意不明:数组由数组名代表它的首址 数组名本身只有一个存放地址,不存在首址的问题 保存数组首址需要用指向指针的指针 如数组名是a 则 Type **a = &a即可

C语言自定函数内定义一维数组,为什么不能将数组名作为返回值?_百度...
当把数组名返回时,实际上是返回了数组的首地址,后续继续使用该地址指向的内存。如果数组为局部变量,那么按照C语言的规则,该段地址在退出函数后,会被释放,并可能被系统做其它用途,这样再继续访问该段地址就会引起不可预知错误。所以对于局部数组名是不可以返回的。而静态局部变量,开辟的空间不会在...

java中一个数组可以看成一个类吗,数组当中的每一个元素可以看成一个...
Java 语言中数组的定义是用来存储固定大小的同类型元素。数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。数组属引用类型,数组型数据是对象(object),数组中的每个元素相当于该对象的成员变量。数组是多个相同类型数据的组合,实现对这些数据的统一管理。一个数组实际上就是一连串的变量,...

c语言数组如何在函数中传递?不要指针传递
数组只能通过指针传递,不能通过值传递。数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.1. 数组参数就是指向第一个元素的指针: #include <stdio.h> void getArr(int...

c语言中,数组元素可以是变量或表达式吗?
数组元素 可以赋值为变量或表达式。但实际存储的只能是最终运算的值。比如 赋值 a[0]=1+2;那么a[0]的值就是3. 无法得知这个3是怎么计算过来的。

文水县19877485318: c语言数组不可以当成指针使用,但是指针可以当成数组使用 -
康庾康艾: 指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定.它是“储存指针的数组”的简称. 数组指针:首先它是一个指针,它指向一个数组.在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,...

文水县19877485318: C语言中数组能否当指针使用 -
康庾康艾: 不能,在某些情况下虽然可以通用,但他们内部实现机理是不一样的,简单说,可以把数组名当做指向数组第一个元素的指针,但这个指针你并不能让它指向别的元素,比方说a[10] ,a代表 &a[0], *(a+2) 代表a[2],但是你要是用a=&b,那就错了,因为a不能指向别的元素,这么解释明白了不?望采纳

文水县19877485318: 在C语言编程中,不想用指针,是否可以用数组来代替指针??? 我觉得所有的指针都可以用数组来代替. -
康庾康艾: 基本上所有的数组都可以用指针代替,而不是所有的指针都能被数组代替的,数组名本身就相当于一个不可变的指针

文水县19877485318: 请高手指点C语言中,数组是不是不可以作为realloc函数中的指针参数输入吗?例如:void main() { int a[10] -
康庾康艾: 不可以,数组首地址是个常量,不可以被赋值的. 另外,数组是分配在栈里的,是在初始化时候大小就分配好了,realloc函数是动态分配空间的函数,是分配在堆中的 . 数组名作为参数当然可以,就是传数组首地址,但绝对不可以给数组地址赋值的.

文水县19877485318: C语言中 数组到底是不是指针和数组作为参数问题 -
康庾康艾: 数组是实际上指针的语法糖(即指针才是最原始的) ,仅仅在数组作为形参声明时数组才不可 解读为指针 eg:int func(int a[]) 和 int func(int *a) 不同,其余情况都可 进行 指针 和数组的转换:即 a[i]=*(a+i) 一般 数组用于存储接收,而指针则用于 调用相关元素.当然两者都有前面的功能.不知 清楚了没?

文水县19877485318: C语言中,数组都有什么用?
康庾康艾:数组就是描述一系列数的集合,在电脑运算中经常使用循环运算,而循环运算的数据则主要是数组提供的 数组在内存中分配是栈内存,是【连续】存储【同一种类型】的【线性】结构.它的作用主要体现在对同一类型的数据进行存储.(要是int型,全都是int型,要是char型,全都是char型),不可以出现其他类型.对数据的访问是具名访问,可是直接读出数据中某一块的数据,例如int array[5]={1,2,3,4,5}; array[3]等于3.这里需要注意的是:数组的下标是从0开始的.如果你想访问array[5],会提示错误,因为已经越界了.提取数据比较方便,因为数组在内存中是连续存储数据的,好找.随便说句,数组可以当指针用,但它绝不是指针.

文水县19877485318: C语言中二维数组名是不是可以看作指针数组名? -
康庾康艾: 例如: 二维数组名是一个指针,但是说它是常量的意思是它本身不可更改:如你定义int a[34][3],a确实是个指针,*a指向数组中第一个整数;但是你不能通过a++操作使在此操作后a指向数组中第二个整数,而普通指针(int a[12];int *b=a;b 就是普通指针)可以这么操作的,所以说它是“指针常量”;

文水县19877485318: c语言里面为什么不能把指针赋给数组名? -
康庾康艾: .此时的数组名虽然也是指针,但应该看成指针常量,是不能修改的..2、void fun(char a[]){} void main(){char *p = "123";fun(p);}数组作为函数参数的时候,是可以把指针变量赋值给它的,这时数组名就可以看作一般的指针变量了..简单的说就是这样..

文水县19877485318: 指针与数组的区别和联系 -
康庾康艾: 区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针.所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以...

文水县19877485318: C语言数组下标和指针的关系 -
康庾康艾: 数组和指针的区别: 数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网