int main(){ int *p1,*p2,*p;scanf("%d %d",&a,&b);int a=2,b=5;p1=&a;p2=&b;if(a<b){ p=p1; //将p1和p2的指向互换。p1=p2;p2=p;} printf("%d %d\n",*p2,*p1);return 0;}
(2)对于 int (*p)[2], 它相当于一个二维数组的用法,只是它是一个n行2列的数组,可以这样来用:include <stdio.h> int main() { int (*p)[2];int b[3][2] = {{1, 2}, {3, 4}, {5, 6}};p = b;for(int i = 0; i < 3; i++) { for(int j = 0; j < 2...
(2)对于 int (*p)[2], 它相当于一个二维数组的用法,只是它是一个n行2列的数组,可以这样来用: #include <iostream.h> void main() { int (*p)[2]; int b[3][2] = {{1, 2}, {3, 4}, {5, 6}}; p = b; for(int i = 0; i < 3; i++) { for(int j = 0; j < 2; j+...
3)int(**p)[] 这个的意义:q是一个指针,指向的元素就是2)中的p. #include<iostream>#include<stdio.h>usingnamespacestd;intmain(void) {inta[2][2]={1,2,3,4};int(*p)[2] = a;//p point to the row of array afor(inti =0;i<2;i++)//output matrix using p{for(intj =0;j<2;j...
int(*p)[N];p在这里先执行按址取值运算,再执行数组索引运算,最终得到int类型,从而反推出 *p为一个...
不行的。p是指针变量。虽然里面的值存放的是地址。但p本质还是个变量。p[2]表示在内存中开辟一个连续存储空间。其首地址为p。这里p为常量。两个p根本不是一个意思。int a[2]。p=a即可。这是c语言。与嵌入式单片机无关。手机打字无力请给分。谢谢。
你只声明了p、p1和p2,并没有声明p3,所以int*p,*p1,*p2,*p=*p1,*p1=*p2,*p2=*p3要发生p3未声明编译错误;即使p3也声明了,那么p、p1、p2和p3都还没有指向任何变量,哪儿来的对象内容*p、*p1、*p2和*p3?p=p1,p1=p2,p2=p3同样的错误。p1还没有指向谁,就把它的“指向”赋给p肯定...
*p首先就说明了p是一个指针。(*p)[4] 说明这个指针指向这个一个有4个元素的数组。这个数组是类型呢...
1、int(*p)[4];---ptr为指向含4个元素的一维整形数组的指针变量(是指针) 2、int *p[4];---定义指针数组p,它由4个指向整型数据的指针元素组成(是数组) 3、int(*)[4];---实际上可以看作是一种数据类型。也就是第一个(int(*p)[4];)中定义的p的数据类型 其实你要看这种到底...
int *p 中 *p 和 p 的差别:简单说 *p 是数值,p 是地址! *p 可以当做变量来用; * 的作用是取后面地址 p 里面的数值 p 是当作地址来使用。可以用在 scanf 函数中: scanf (“%d”,p); ⏺相关知识点: 试题来源: 解析 空语句 不可以 随意执行,会导致 逻辑错误 。反馈 收藏 ...