为您找到"

数组问题 int a[5],*p;p=a;p=&a[0];p=&a;都是什么含义

"相关结果约100,000,000个

int a[5]={1,2,3,4,5}; int *p=(int*)(&a+1); printf("%d",*(p-1...

这个问题的关键是理解 &a a是一个数组名,也就是数组的首地址。对a进行取地址运算符,得到的是一个指向数组的指针!!!这句话尤为重要!也就相当于 int (*p) [5] = &a;p是一个指针,它指向的是一个包含5个int元素的数组!!那么执行p+1后,p的偏移量相当于 p + sizeof(int) * 5 !

c语言问题

数组和指针的关系 如果对声明数组的语句不太明白的话,请参阅<<如何理解c和c++的复杂类型声明>>, 数组的数组名其实可以看作一个指针,看下例:例八:int array[10]={0,1,2,3,4,5,6,7,8,9},value;...value=array[0];//也可写成:value=*array;value=array[3];//也可写成:value...

谁发点C语言例子给我,关于数组和指针的

总之*p的结果是p所指向的东西,这个东西有这些特点:它的类型是p指向的类型,它所占用的地址是p所指向的地址。 例五: int a=12; int b; int *p; int **ptr; p=&a;//&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址 是a的地址。 *p=24;//*p的结果,在这里它的类型是int,它所占用的...

int a=5, *p, *q=&a; *p=q* 哪错了?

int a=5, *p, *q=&a;这个语句定义了 a 为整型变量,p 和 q 是整型指针,a 存储了5,q存储了a的地址;p=q*这个有错,首先p没有初始化就开始用了,我们不清楚p指向了内存中哪个位置,这是非常危险的,其次,q*应该为*p,用来取a=5这个值。* 运算符作为单目运算时在变量前。

int a[3],*p=a;为什么a++不能表示a[1]的地址而p++可以表示a[1]的...

int a[3]; a是个数组名,数组名是个常量,不能改变的,所以a++是不行了

一个数组int a[10]含有10个整数,由被调函数找出其最大最小值,最后在...

include<stdio.h> int max(int *p){ int i,max=p[0];for(i=0;i<10;i++)if(p[i]>max)max=p[i];return max;} void main(){ int a[10]={0,1,2,3,4,5,6,7,8,9};printf("%d\n",max(a));}

int a[10],*p=a,*q=&a[5];q-p=

因为指针p指向的是数组a的第1个元素,指针q指向的是数组a的第6个元素,注意数组下标是从0开始的,所以q-p=5,希望能帮到你。

int a[] = {1,2,3,4,5,}; int *p = a; int *q = &a[5]; printf("%d...

看看我下面的演示,你就知道那只是个巧合而已(5并不是数组里面的数字哦,两个地址差,16进制地址相减结果是0x14,换算成十进制就是20,int每个占4byte,所以20/4=5):

c语言指针:int a[3][4],(*p)[4];p=a;为什么*p会等于&a[0][0]? p

&a=a = a[0]=&a[0][0]。他们的值是一样的,都是地址,但是他们代表的步长不一样。步长体现在你做加法的时候,比如(&a++),地址就偏移了sizeof(int )*3*4的后面,到了这一片数组的后面,a++就是偏移了sizeof(int)*4,偏移到a[1],a[0]++就是偏移了sizeof(int),到了&a[0]...

int (*p)[4]和 int a[4]; int *p=a;有本质区别么, int (*p)[4]如何...

有本质区别,int (*p)[4]:p的类型是指向一个数组的指针 int *p=a:p是一个指向整数的指针 初始化:int (*p)[4] = &a;要理解这个先要清楚指针的类型问题。内存地址保存在任何类型的指针中都是一个数值而已,但指针变量本身是有类型的,可能两个不同类型的指针变量的值是一样的。假设 int ...
1 2 3 4 5 6 7 8 9

相关搜索