本文目录
- C语言问题,指针指向数组使指针变量p指向数组a的第三个元素,p=&a+2可以吗如果不可以,它是
- C语言关于指向一维数组的指针
- C语言指针指向一维数组与二维数组
- C语言指针数组问题
- 在c语言中,当我定义好一个指针后,可不可以将这个指针直接指向数组的末尾
C语言问题,指针指向数组使指针变量p指向数组a的第三个元素,p=&a+2可以吗如果不可以,它是
int a ;int *p=a ; //定义一维指针p,并指向数组a首地址。p=a+2 ; //指向数组a的第三个元素或写成:p= &a的地址,赋值给pp=&a ; //这是错误的语句!因为,&a的类型是int **, 而p是int *类型,所以,类型不相符,不能进行赋值操作。
C语言关于指向一维数组的指针
你的2个程序是不同的。关键知识是: 普通指针 和 数组指针 的 不同点。下面是简单的说明。int *p; 是普通的指针,指向一个地址。p=a; 让它指向2维数组的始地址。由于数组是按行排列,所以下标printf("a。=========int (*p); 这是数组指针,用于指向4个元素一行的数组。p= &a; 让 它指向 数组 的开始地址。程序中可以用 p 使用。printf("a。
C语言指针指向一维数组与二维数组
3和2是一样的,也是会报错的。
可以使用行指针double (*p)=data;指向数组第0行,也就是我们平常理解的第一行。
访问方式,假设data是i行j列,*(*(p+i)+j)就是第i行j列的元素值,也就是data的值。
也可以使用列指针double *p = data指向第0行0列,访问方式如下:
C语言指针数组问题
1. int (*p), p = a + 2()优先级先于知道是一个指向数组的指针,因此他其实简单来说就是个指向长度为三的一维数组的指针。如果是数组b的最后一行,这符合p的性质(指向数组的指针),因此是对的。。2. int *p , p = *( a + 2 )p定义成了一个指针,指向一个int型变量的指针,根据1的解释,a+2指向了a的最后一行,那么*(a+2)其实就是最后一行中的首元素的地址,p指向了这个首元素,符合p的定义,正确3. int (*p), p = *( a + 2 )根据1的解释,p是指向数组的指针;根据2的解释,*(a+2)其实是a中最后一行的首元素的地址,如果令p=*(a+2),就是要p指向这个首元素,这违背了p的定义(指向数组而不是指向单个元素),因此是错误的。。4.int *p, p = a + 2根据2,p应该指向单个元素,但是根据1,a+2实际上是a的最后一行,违背了p的定义(指向单个元素而不是指向数组),因此是错误的。。
在c语言中,当我定义好一个指针后,可不可以将这个指针直接指向数组的末尾
可以。指针可以指向任何地方,但指向后能不能写就是另外一回事了。比如:p=&a可以用*p=10写内存,但是p=&a+1就不一定能用*p=10来写该地址的内存了。