假如char *p【2】 ,ch【2】【5】然后p【i】=ch【i】.怎么理解呢
发布网友
发布时间:2022-05-31 14:03
我来回答
共3个回答
热心网友
时间:2023-10-16 15:49
其实在底层来讲的话,数据只存在于一维线性空间里。
比如说,定义了ch[2][5],其实就相当于定义了ch[10]的空间,那么对于定义ch[10],其实也可以通过访问ch[1][4]来访问ch[9]这个数组成员。
两者在内存中是等价的,完全可以通过以上两种不同的方式来访问。
ch[0][0] ch[0]
ch[0][1] ch[1]
ch[0][2] ch[2]
ch[0][3] ch[3]
ch[0][4] ch[4]
ch[1][0] ch[5]
... ...
ch[1][4] ch[9]
而关于指针P为什么可以访问,对于数组和指针,两者在内存分配的地点上有些许差别,但都起指向的作用。因此初学者或者甚至是专业程序员都不用考虑太多两者的类型问题。
热心网友
时间:2023-10-16 15:50
p是二维数组指针
ch是二维数组首地址
p[i]是第i个一维数组的首地址
ch[i]也是第i个一维数组的首地址
还有关于二维数组的问题,就好好看书吧。
热心网友
时间:2023-10-16 15:50
p的一维的维数是2,另一维的维数不定长的。类似字符串数组。
ch的一维的维数是2,另一维的维数是5。类似矩阵存储。
C语言指针问题
2.p是指针数组,就是有两个指针 for(i=0;i<2;i++) p[i]=ch[i];这个就是赋值给p指针,其中p[0] 等于ch二维数组的第0行的首地址,p[1]等于ch二维数组的第1行的首地址 for(i=0;i<2;i++) //循环p指针数组 for(j=0;p[i][j]>'\0';j+=2) //间隔j+=2循环p[i]...
什么叫单片机???????
单片机,单片微型计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/输出端口(I/O)等主要计算机功能部件都集成在一块集成电路芯片上的微型计算机。单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通...
我这有C语言的题,哪位大侠能解决一下,必有重谢!
5、假设所有变量均为整型,则执行运算x=(a=2,b=5,b++,a+b)后, x的值是( )。本题(1分)A:7B:8C:6D:2 A B C D 6、若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为( )。本题(1分)A:j*m+iB:i*m+jC:i*m+j-1D:j*m+i-1 A B C D 7、当a=2,b=3,c=4,d=...
3. 如果有变量定义:char ch,*p=&ch; 要将'y'赋值给ch,要求通过指针变量p...
p='y';
C语言关于0的问题 s=10*s+p[i][j]-'\0'
你的代码应该为了实现将数字字符串转化成相应的整数吧,如果是的话代码应该是这样:main(){ char ch[2][5]={"6937","8254"},*p[2];int i,j,s=0;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0'&&p[i][j]<='9';j+=2)s=10*s+p[i][...
char *p; //---1 *p=97; //---2 请问2句中 *p是个内存地址呢还是地址...
p,是char型指针变量。 p变量中存放的是内存地址。p,是char型指针变量指向的地址中的值。p=97;中,*p相当于一个普通变量(你可以这样认为它),如:char ch , *p=&ch ;//p指向ch,即p中存放了ch的地址值 p=10 相当于 ch=10 ;有一点重要的是:在指针变量没有存放地址时(是野指针时),...
char c[2][5]={"6938","8254"},*p[2] 中*p[2]是什么意思?
定义p为包含两个指向char型变量的指针的数组。说的明白点:1. p是个数组,有两个元素 2. 那两个元素都是指针 3. 指针指向的是char型变量 就是这样。
P和*P一样吗???
不一样 例如:int i,*ptr1;ptr1=&i;ptr1=100;/*把100存入ptr所指向的变量i中*/ 等同于:i=100;又如:char ch,*ptr2;ptr2=&ch;ptr2+=32;/*把ptr2所指向变量ch中的值加32*/ 相当于:ch+=32;ch=*ptr2;相当于:ch=i;应当注意的是,在变量声明中的“*”和表达式中的...
char *a[2]={"one","two"},**p=a;printf("%s",*(p++)+1);printf("%c...
// 解引用后*(p++)得到"one"的首地址,再+1,// 就指向"one"的n处,输出ne。然后p进行加1,指向a[1]。//p++返回的是p自增前的值,不是自增后的值,切记!//其实*(p++)可以写成*p++,因为++比*的优先级高!printf("%c",**p-1); //注意p已经指向了a[1]!**p即取得首字符...
char ch[]=' i amhandsome';char *p=ch; 问 *(p+2)和*p+2的结果是多少...
char ch[]= "i amhandsome"; //这里我默认是你打错了,单引号会导致编译错误,双引号才表示字符串。char *p=ch; //指向ch字符数组的首地址,即0号元素'i'的地址 (p+2) //p+2,指向ch数组的2号元素,即'a'的地址。*(p+2)解引用,即'a'p+2 //*p等于'i',再加2,相等...
char *p="girl"; 的含义是定义字符型指针变量p,p的值是字符串"girl...
p是指针,他的类型是char型,指向常字符串girl,*p的值是girl,p的值是girl字符串的首地址。字符指针也可以指向一个字符串,可以用字符串常量对字符指针进行初始化。例如:char *str = "hello" ;这是对字符指针进行初始化。此时,字符指针指向一个字符串常量的首地址。还可以用字符数组来存放字符串...