当前位置:首页 » 编程语言 » c语言一维数组指针

c语言一维数组指针

发布时间: 2022-02-25 18:29:02

1. 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]就是一个元素

2. C语言关于指向一维数组的指针

变量的值可以改变,常量的值无法改变。
字符串"ab"在程序中为常量,不可改变。
想要改变字符串中元素顺序,可给指针p分配一段空间,再赋值即可。

3. 写程序(C语言),使用指针实现打印一维数组所有元素的操作。

#include<stdio.h>

voidmain()

{

inta[100],*p;

intn,t;/*你所要输入数字的个数*/

p=a;

printf("pleaseinputnumbern:");

scanf("%d",&n);

t=n;

while(n--)scanf("%d",p++);/*以此输入要输入的数字*/

p=p-t;

for(inti=0;i<t;i++)

{

if(i%4==0)printf(" ");

printf("%d ",*(p++));

}

printf(" ");

}

运行结果见附图

4. c语言一维数组,指针,动态存储分配

#include<stdio.h>
#include<string.h>
intmain()
{intn,i,*p;
scanf("%d",&n);
p=(int*)malloc(sizeof(int)*n);
for(i=0;i<n;i++)
{*(p+i)=i+1;
printf("%d",p[i]);
}
return0;
}

5. C语言中一维数组和指针有什么区别

指针都没初始化,运行个毛啊。

应该这样:

6. c语言一维数组指针问题

数组明代表的是改数组的首地址,nums就是第一个元素的的值,nums+1就是第二个元素的值了

7. 请问C语言里一维数组能用数组指针吗如果可以怎么用呢

数组指针可以指向一维数组的。
指针本来就是变量,是用来存放地址的变量。
如:
int (*a)[3],b[12];
a=b;
a++;
之后,*a相当于a[3]

8. C语言:一维数组与指针

#include<stdio.h>
main()
{
int n,i,a[100],*p,s=0;
float aver;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
p=a;
for(i=0;i<n;i++)
s=s+*p++;
aver=1.0*s/n;
printf("和为:%d,平均数为:%.1f\n",s,aver);

}

9. C语言编程,题目1:定义一个一维数组,用指针引用的方法对该数组各元素赋值,然后输出该数组。【未完】

题目1
void main()
{
int i;
char a[3];
*a=1;
*(a+1)=2;
*(a+2)=3;
for(i=0;i<3;i++)
{
printf("%d.\n",a[i]);
}
return;
}
题目二
#include<stdio.h>
void main()
{
int i,j;
int A[3][4]=
{
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
int (*p)[4]=A;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%d.\n",*(*(p+i)+j));
}
}
return;
}

10. C语言一维数组指针

  • p=&a;才是=号两边类型匹配。因为p被声明为指向有4个元素的一维整型数组的指针,而a被定义为一个整型数组的第一个元素的指针,所以写成p=a;等号两边类型不匹配,连编译都过不了。而&a就是一个有4个整型元素的一维数组的指针——就是说在int a[4]={1,3,5,7};的定义后,a是1的地址,a+1就2的地址;而&a的值虽与a相同,但&a是整个数组{1,3,5,7}的地址,&a+1就指向7后面的那个单元了。而int (*p)[4];这种声明恰好就是&a的意思,即p是个指针,指向一个4元素整型数组,也就是p+1就要跳过4个int元素所占有的空间。

  • printf("%d ",(*p)[3]);中的(*p)[3]的意思是这样的:有了p=&a;后,p的地址“值”就是1的地址“值”,但意思是紧挨着存放的1,3,5,7这4个int数的首地址,*p后就是第一个元素1的地址了,那么(*p)[3]就向后移动3个元素位置,应该是7了……这里把*p用()括起来是因为[]的优先级比*高,不括起来就被解释成*(p[3])了,意思就大错了!

  • 这里涉及的指针操作表述起来有些“绕”,得慢慢体会……

热点内容
python如何判断密码强度 发布:2025-01-10 18:39:58 浏览:980
安卓怎么快捷关程序 发布:2025-01-10 18:35:48 浏览:922
仔细的算法 发布:2025-01-10 18:28:30 浏览:546
c语言判断是否为回文数 发布:2025-01-10 18:21:31 浏览:783
win7vhd加密 发布:2025-01-10 18:20:35 浏览:420
手机存储空间里的其他怎么清理 发布:2025-01-10 18:19:59 浏览:801
二手的电脑服务器都怎么处理了 发布:2025-01-10 18:19:05 浏览:906
定压补水装置如何配置 发布:2025-01-10 18:12:34 浏览:431
安卓是华为的什么 发布:2025-01-10 18:12:27 浏览:541
pythonsetget 发布:2025-01-10 17:53:12 浏览:854