当前位置:首页 » 密码管理 » 指针一维数组的访问

指针一维数组的访问

发布时间: 2022-08-02 03:05:35

‘壹’ 20个整数存储在一维数组中,要求用指针法访问数组,通过冒泡方式将其中最大值移到数组尾部输出全部数据

按照题目要求编写的程序如下(见图)

‘贰’ c中用指针遍历一维数组的问题。

vs2005,把int i;放到前面后,正常。
首先纯C中用的时候再定义变量是C99的标准。
vs2005是部分支持C99标准的,在vs2005的.c文件中默认是不支持的,你的没问题应该是你文件名是.cpp了,这在用来调试C程序是不好的。

错误的原因就是你前面已经用指针p遍历过一次了,p的地址已经改为a+5了,不再是a了,再继续访问属于越界访问了,如果没有挂的话显示值就是内存中的值,值随机。

‘叁’ C程:通过指针间接访问一维数组元素

#include<stdio.h>

#define NUM 50

int main(void)

{

int a[NUM],i;

int *ap;

for(i=0;i<50;i++)

{

a[i]=i+10;

}

i=0;

for(ap=a+49;ap>=a;ap--)

{

printf("%d,",*ap);

i++;

if(i%5==0)

printf(" ");

}


return 0;

}


‘肆’ 描述使用指针变量访问一维数组的基本过程

你说的应该是一个函数里面定义了指针叭;把几个知识点跟你说一下:

  1. 指针的本质就是地址

  2. 数组Array[10]中Array表示数组首元素的地址,也是指向数组首元素 的指针;Array+1表示数组第二个元素的地址,也是指向数组第二个元素的指针

然后我们看函数调用:void travelList( int * k);

这里面的int * k表示一个变量名为k的指针(地址),你可以把任何地址放进来;于是乎我们这样调用travelList(Array),这就相当于k定位到了Array的位置,可以任意读取Array的内容了;

此时在这个函数里面 k[0]=Array[0],k[1]=Array[1],k[3]=Array[3]......

差不多就是这些了,如果要问更多的内容可以私信我,同时如果这个问题可以帮助你的话,能关#注我#一下🐎

‘伍’ c语言一维数组指针调用

这个大概也只能用来做理论研究了,实际编程过程中不可能这么写,
int a[10] ; a[i]
int *p ,p=a; p[i]
这两个应该好理解
注意,一旦声明int a[10]
那么a就是一个地址常量了,他是数组a在计算机内存中的首地址

a+2就相当于&a[2]
把他当成一个数组(假设为b)的起始地址的话
(&a[2])[5]也就是一个数组的元素,b[5]
而他对应的原来的a数组元素就是a[7]
看图:
地址:

&a[0] &a[1] &a[2] &a[3] ... &a[9]

a a+1 a+2 a+3 ... a+9
&b[0] &b[1] ... &b[7]
b b+1 ... b+7
元素 a[0] a[1] a[2] a[3] ... a[9]
b[0] b[1] .. b[7]
另外这个
(&a[i])[j] =>a[i+j]
就相应的推出来了
实际上就是要注意
a,a[0],&a[0]三者之间的关系

a是数组的首址,也就是第一个元素的地址,也就是&a[0]
而a[0]就是一个元素

‘陆’ c语言中数组访问和指针访问的区别

一维数组 等效于常量一维指针
二者除了数组名不能改变值以外,访问完全相同。
二维以上数组,访问时直接根据数组首地址 计算出偏移量访问。
而二维以上指针,则是分步取出各个中间地址值,然后再取出最终值。

‘柒’ 假定a为一维数组,则a[i]的指针访问方式是什么

一维数组的数组名,在不改变其值情况下,可以做指针使用。
在作为指针时,a[i]等效于*(a+i)。
也可以单独定义指针。比如定义a的同类型一维指针p,令p=a;
这样*(p+i)同样是访问a[i]的。
区别是这个p是可以加减的,所以同样可以p = a+i; 这时*p就是a[i]了。

‘捌’ C语言指针指向一维数组与二维数组

‘玖’ 一维数组与指针问题

a也是指针,它作为指针和p的区别就是a的值是不可以改变的,就是a只能指向初始化时给它地址。所以,p=a是正确的,这样p所指向的和a所指向的是一样的,都是这个数组的第一个元素的地址。你可以通过p[i]来访问这个数组。
*p = a是不正确的。
假如int *p,a[10]这样定义的,会提示不能将int[]转化成int的编译错误。

‘拾’ C程序 通过指针间接访问一维数组元素

#include<stdio.h>
#defineNUM10

intmain()
{
inta[NUM],*pa,temp;
pa=a;

for(inti=0;i<NUM;i++)
scanf("%d",&a[i]);

for(intj=0;j<NUM;j++)
{
for(intk=j+1;k<NUM;k++)
{
if(*(pa+k)>*(pa+j))
{
temp=*(pa+j);
*(pa+j)=*(pa+k);
*(pa+k)=temp;
}
}
}

printf("%d ",*(pa));
for(i=1;i<NUM;i++)
{
printf("%d ",*(pa+i));
if((i+1)%5==0)
printf(" ");
}
return0;
}

热点内容
浏览器打不开服务器通信怎么办 发布:2024-05-18 21:32:22 浏览:961
创建存储空间 发布:2024-05-18 21:20:57 浏览:122
sql日期和时间 发布:2024-05-18 21:16:19 浏览:143
安卓网页怎么截取 发布:2024-05-18 20:53:56 浏览:972
在配置更新的时候没电关机怎么办 发布:2024-05-18 20:36:10 浏览:928
win7访问win2000 发布:2024-05-18 20:27:41 浏览:389
青岛人社局密码多少 发布:2024-05-18 20:19:10 浏览:735
无法存储呼叫转移 发布:2024-05-18 20:18:30 浏览:128
数据库的调优 发布:2024-05-18 20:18:29 浏览:347
sqlserver注册表清理 发布:2024-05-18 20:13:14 浏览:993