数组指针定义 定义一个指针数组和一个数组指针有什么区别?

作者&投稿:于壮 (若有异议请与网页底部的电邮联系)
首先,应该明白:int *p=a;相当于int *p;p=a;
a也是地址,是数组的首地址,不过a是个常量,是不能变的!!
p是指针,保存的是地址;*p是指定地址所在单元的值,在这里就是数组元素。
p 变化了,就是指向了不同的元素,*p变了,所指的元素没有变,是元素的值变了。

*p=i 问题出在这里
int *p=a; 这里你已经完成了int型指针的定义和初始化
指针定义完成后使用是不需要带 (*) 的,带(*)就是解析该指针,也就是取得p所指向的值 然后你(*P=i;)就完成了赋值 ,把当前p所指向的a[i]赋值为i;
总之,a数组值的变化你是自己造成的 其实你这个for循环就是 初始化数组的一种方法
还有 当你用一个一级指针指向了一维数组后 其实可以把p当做数组名用 也就是p[i] 等介于a[i]

1、因为 数组a中 还有四个位置,既然指针p跟赋值为数组a ,所以指针p 跟数据a会相互影响。
2、int *p=a 表示声明指针p赋值数组a地址 ,*p表示指针p取值。这个涉及到 * 号的优先权。指针的特点就是赋予内存地址,而直接给指针赋值的情况较为少见。而把“指针取值后赋予数组的等式 ”a=*p根本就不能成立。

这是指针,将a的首元素地址赋给p之后,p就指向a的首元素了,其实a也是一个指针,这时a和p指向同一个地址,你给p指向的变量赋值,当然就是给a的数组元素赋值了

a是数组名,可以理解为静态指针,是不能被修改的。只有通过修改p指向元素的值来给数组赋值。

如何定义数组指针~

楼主说的是数组指针,说的是一个指向数组的指针。
不是一个存放指针的数组。
可以typedef实现。
假如:是一个指向int 数组的指针,数组大小为10;
则可以写成
int (*a)[10];
则a就是一个数组指针。
或者写成
typedef int (*a)[10];
a pa;
则pa就是一个数组指针。a是一个数组指针类型。

指针数组是指数组里的元素是指针,比如char *a[2];a[0]和a[1]是一个char *类型的变量;
数组指针是说这个指针指向一个数组,比如char (*a)[2],注意括号不能少,这就代表说a是一个指针,它指向一个数组,数组的大小是2,数组的元素是char类型的。

数组指针定义
答:p是指针,保存的是地址;*p是指定地址所在单元的值,在这里就是数组元素。p 变化了,就是指向了不同的元素,*p变了,所指的元素没有变,是元素的值变了。

数组指针定义方式
答:1、p被定义成一个数组指针,它可以指向一个含有10个char元素的一维数组,具体的说是指向“一行”;2、q被定义成一个字符指针,它可以指向一个char型的存储单元,因此q=a完全没问题,因为a就是&a[0],它表示char型存储单元的a[0]的地址;3、p+1指向了a[10] ,也就是刚才数组a的“下一个元素...

C语言中,如何定义一个‘指针数组’,这个‘指针数组’专门用来存放‘数组...
答:指针数组定义int*p[n];[]优先级高,先与p结合成为一个数组,再由int*说明这是一个整型指针数组,它有n个指针类型的数组元素。这里执行p+1时,则p指向下一个数组元素,这样赋值是错误的:p=a;因为p是个不可知的表示,只存在p[0]、p[1]、p[2]...p[n-1],而且它们分别是指针变量可以用来...

c语言指针,指向数组的指针、指向指针数组的指针、指向数组的指针...
答:解答:1. 如何声明一个指针,这个指针是指向整个数组的,数组有n个元素,每个元素是int,不是int (*p)[n],而是最简单的int*p;2. 如何声明一个指针,这个指针也是指向数组的,数组有n个元素,每个元素不是int,而是指针int*;这个指针是int**p;3. 又如何声明一个指针,它指向另一个指针,这“...

如何定义数组指针
答:楼主说的是数组指针,说的是一个指向数组的指针。不是一个存放指针的数组。可以typedef实现。假如:是一个指向int 数组的指针,数组大小为10;则可以写成 int (*a)[10];则a就是一个数组指针。或者写成 typedef int (*a)[10];a pa;则pa就是一个数组指针。a是一个数组指针类型。

如何定义一个指向数组的指针
答:指针数组是一种特殊的数组,指针数组的数组元素都是指针变量。指针数组的定义格式为:类型名称 *数组名称[数组长度];例如:float *pf[3];因为下标运算符[]的优先级高于指针运算符*,上述定义等价于:float * (pf[3]);说明pf是一个含有3个元素的数组,数组元素为指向float型变量的指针变量。又如:i...

c语言中怎么定义一个字符串数组指针
答:c语言中定义一个字符串数组指针可以这样写:// Example program#include <stdio.h>int main(){ char str[] = "abc"; char *p = str; printf("%s\n", str); printf("%s\n", p); return 0;}

返回值是一个数组指针的函数怎么定义?
答:定义 int *f(){ return a;} 数组名的指针,即数组首元素地址的指针。即是指向数组的指针。例:int (*p)[10]; p即为指向数组的指针,又称数组指针。数组指针是指向数组地址的指针,其本质为指针;指针数组是数组元素为指针的数组(例如 int *p[3],定义了p[0],p[1],p[2]三个指针),其本质...

求C语言高手指点:请问如何指针定义二维数组?? 请用 **p ,(*P...
答:由于指针运算符“*”是自右至左结合,所以上述定义相当于:float*(*ptr);[例6-27]用指向指针的指针变量访问一维和二维数组。#include#includemain(){int a[10],b[3][4],*p1,*p2,**p3,i,j;/是*p指3向指针的指针变量*/for(i=0;i<10;i++)scanf("%d",&a[i]);/*一维数组的输入*/for(i=0;...

C语言如何定义指针指向字符型二维数组
答:1.使用列指针:定义一个列指针p,让它指向二维数组的第0个元素 int a[3][4];int *p;p=&a[0][0];//因为a[0]是第0行的数组名,所以p=&a[0][0]相当于p=a[0],因为a[i][j]前面共有i*4+j个元素 该二维数组的任意i行j列元素可表示为*(p+i*4+j)。2.使用行指针:定义一个...