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

作者&投稿:潜烟 (若有异议请与网页底部的电邮联系)

c语言用指针取值比用数组名取值快吗
CSAPP书上讲数组引用a[i]和&(a+i)是等价的,转换成汇编都是先计算第i个数组元素的地址,然后访问这个内存位置,所以C语言指针取值和数组名取值是一样快的!另外在C陷阱与缺陷中,明确提到对于一个数组的引用,咋看上去是对数组下标的运算,实际上是通过指针进行的,即任何一个数组下标的运算都等同于...

C语言指针,下标,
2.指向数组元素的指针 若有如下定义:int a[10], *pa;pa=a;则p=&a[0]是将数组第1个元素的地址赋给了指针变量p。实际上,C语言中数组名就是数组的首地址,所以第一个元素的地址可以用两种方法获得:p=&a[0]或p=a。这两种方法在形式上相像,其区别在于:pa是指针变量,a是数组名。值得...

c语言数组不可以当成指针使用,但是指针可以当成数组使用吗?
可以 1.指针数组:首先它是一个数组,数组的元素都是指针,数组占多少个字节由数组本身决定。它是“储存指针的数组”的简称。2.数组指针:首先它是一个指针,它指向一个数组。在32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。3.核心思想是通过...

C语言数组下标和指针的关系
类型标识符 * 变量名eg:char * Pointer性质数组名是一个常量,不能进行自增等运算.  eg: Data++; X指针是一个变量,能进行自增等运算. eg: Pointer++; √引用数组利用下标引用数组中的数据eg: a = Data[5];指针利用取值运算符引用所指向的数据eg: a = *Pointer;其它联系:当我们将一个...

C语言基础:指针数组与数组指针
一、指针数组 在这一部分,我们将探讨一种特殊的数组——指针数组。这种数组既特殊又普通。它的特殊性在于数组中的元素都是指针型变量,而普通性则是因为数组变量本身与普通变量并无太大区别。指针变量可以存储内存地址,因此可以被定义为一组连续的变量集合,这个集合即指针数组。例如,我们可以定义一组...

关于c语言 把数组名赋予指针的问题。
你的理解从本质上就有问题 int *p1=a不能通过编译,因为a是二维数组指针,类型是int (*)[3],无法转换到int*型。必须用int (*p1)[3]=a或者int *p1=a[0]才可以。同理int p2=a[0]无法通过编译,因为a[0]是一个int指针而不是一个int元素,必须用int *p2=a[0]才可以。a代表二维数组...

c语言指针问题 不理解步骤 特别是p-a<10 到底是什么逻辑?望解答谢谢...
首先需要了解数组和指针之间的关系。int a[10]定义了一个10个int值长度的数组,那么a既是数组名,同时本质上也是数组的首地址,或者说是数组第一个元素的地址;并且C 语言的数组名是不能赋值的,也就是a永远指向数组的首地址。p = a,因为p是一个int型的指针,因此此处p初始化指向了数组a的首...

c语言中数组名代表数组首地址,它的值在运行期间可以改变吗?
常量是不能出现在赋值号=左边作为左值的。楼上的都没有解释清楚,说数组名就是指针是错误的,指针是变量,是用来存储变量地址值的变量,而数组名是常量。一般情况下声明一个数组,比如char a[10];之后,数组名a都是数组的首地址,是一个地址常量。但是在函数声明的形参列表中除外。比如:int foo(...

C语言中的数组和指针有什么作用
算概率的 举个例子:1,2,3,4,C(4.2)表示4个数字中选2个,不考虑顺序 C(4.2)=4*3\/1*2=6。1,2,3,4,A(4.2)表示4个数字中选2个,考虑顺序。A(4.2)=4*3=12。我只拿这个东西算过双色球,其他地方还没发现能用上。C(M.N)=M*(M-1)(M-2)……(M-N)...

C语言问题:指针变量,数组名,字符串常量的区别。
(A) s和p完全相同 a的类型是cha数组 p的类型是char指针 不一样 (B)数组s中的内容和指针变量p中的内容想等 数组s中的内容是: "china"指针变量p中的内容是: s[0]的地址(&s[0])一个是字符串 一个是地址 不一样 (C)s数组长度和p所指向的字符串长度相等 s数组长度包括 '\\0'...

禤牧15791037512问: C语言中,用数组名作形参和用指针作形参有区别吗? -
扎兰屯市诺力回答: 还是有差别的 虽然大多数时候都可以相互用 最大的差别就是指针可以改变,可以通过指针改变指向内容的值,但数组名不行 举个例子:(分别作为形参) int num[10], *p; p = num;//此时p指向数组的第一个元素 我在主函数里调用两个函数 1 ...

禤牧15791037512问: C语言中数组名和指针的区别 -
扎兰屯市诺力回答: 数组在当作参数传递时,可以当作指针;当然,参数传递相当于赋值操作,所以用指针来接受数组的值也是可以的.除此之外,指针就是指针,数组就是数组,一点也不一样,例如 1,数组名不能作为左值,即不能被赋值,也不能进行++ --操作 2,sizeof 数组名 和 sizeof 指针 不同

禤牧15791037512问: C语言中:数组指针与指针数组有什么区别? -
扎兰屯市诺力回答: 数组指针是指向这个数组首地址的指针,指向对象是这个数组;指针数组是存放一类指针的数组,这个数组的每个元素都是一个指针;例子:int a[10]; int* s; s = a;//这里s就是一个数组指针,它的值就是数组a 的首地址;当然,如果a是一个整数,那s就是一个指向整型的指针;int a; int* s[5]; for(int i=0;i<5;i++)s[i]=a;//这里s就是一个指针数组,它的每个元素都是整型变量a的地址 应该算比较明白了吧 谢楼上提醒

禤牧15791037512问: C语言中,指针和数组的区别和联系? -
扎兰屯市诺力回答: 区别:C语言把内存划分成四个区,它把一般的变量和数组等存在于内存中的栈区,所以数组在C语言的定义中只是一组同类型的普通变量,即使这个变量有可能是指针.所以他的作用比指针小的很多,而指针可以指向任何区的任何数据,所以...

禤牧15791037512问: 数组与指针的区别 -
扎兰屯市诺力回答: 在上面那位的基础改了一下,数组不能动态分配,可以直接用宏定义其实,在WinXP SP3 + VS 2005 express下通过#include using namespace std;#define N 10 template T min(T *num,int n) { T k = *num; for (int i = 1;i < n;i ++) {

禤牧15791037512问: 数组指针和指针数组的区别 -
扎兰屯市诺力回答: 数组指针(也称行指针) 定义 int (*p)[n]; ()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长.也就是说执行p+1时,p要跨过n个整型数据的长度. 如要将二维数组赋给一指针,应...

禤牧15791037512问: C语言中数组名和指针的区别 及 sizeof用法 -
扎兰屯市诺力回答: 指针需要给一个明确的指向才能使用,否则就是一个野指针. 数组名就是一个有明确指向的指针. 数组名有点类似于const指针.比如: int a[10]={0}; a就类似于const int * p = a; 另外,指针的sizeof就是4字节(视系统而定,一般4字节);数组名的sizeof就是这个数组的整个size. 比如:sizeof(p) = 4; sizeof(a) = 10*sizeof(int);

禤牧15791037512问: C++的指针与数组名有什么区别? -
扎兰屯市诺力回答: .数组和指针的区别: 数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如...

禤牧15791037512问: C语言数组下标和指针的关系 -
扎兰屯市诺力回答: 数组和指针的区别: 数组名确实表示指向数组首地址的指针,但这个指针很特别,它的值(指针的值指的是指针所指的地址)不能被改写,能改写的仅仅是其指向的内容,换句话说,数组名只能指向数组的首地址,如果有数组char a[];那么如...

禤牧15791037512问: C语言中用指针表示数组和用数组名表示数组的区别? -
扎兰屯市诺力回答: 如果你是说你注释那里 改成 int *cpointer; int c_count = 0; 如果是这样的话 那就是 cpointer并没有具体指向的空间 换成 int arr[100]; int *cpointer = arr; int c_count = 0; 这样就好了 指针有了具体的指向了


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