short* temp = *p1; çä»·äºä¸é¢ç两æ¡è¯å¥:
short* temp;
temp = *p1
ï¼ï¼
æ¢ç¶tempæ¯æéäºï¼ä¸ºä»ä¹å¯ä»¥ç´æ¥çäº*p1ï¼*p1ä¸æ¯ä¸ä¸ªå¼åï¼
为ä»ä¹ä¸æ¯temp=&(*p1)
Cè¯è¨æçæ¶åå¯ä»¥å¼ºå¶ç±»å转æ¢.
ä¹å°±æ¯è¯´, è¿éä½ æä¸ä¸ªå¼å¼ºè½¬æäºä¸ä¸ªæéèµç» short* äº,
èåä½ åæshort*强转æå¼ä»ç» *p2 äº.
çæäº:
short* temp;
temp = (short*)(*p1);
*p1 = *p2;
*p2 = (char)(temp);
å¦ææ¯å¨C++, è¿ä¸ªå°æ¹å°±ä¼æ¯ä¸ä¸ªé误.
å¦ï¼å¯¹ä¸èµ·ï¼æåªæ¯ç¨shortéç½®æ±åå符ç¨çï¼å¿äºæ¹æchar..
ç°å¨è¿ä¸ªshortæ¯charï¼
æ大æ¦æç½ä¸ç¹äºï¼ä½æ¯è¿æ个é®é¢æ¯ï¼å¨è¿ä¸ªæ¡å®ä¹ç临æ¶åétempæéï¼å¯ä»¥ä¸ç¨æåå°ååï¼ä¹¦æ¬ä¸è¯´æéä¹æ¯åéï¼åªæ¯æåçæ¯å°å
è¿æ¯ææ¹äºä¸ï¼ä¸ºä»ä¹ç¬¬ä¸ä¸ªä¸å¯¹ï¼ææ³ä¸åºåå
é½è¯´äº, æ£ç¡®çåæ³æ¯ç¬¬ä¸ä¸ª, æ以å³æ¯æ¯æshortæ¹æchar,
é£ä¹åºè¯¥æ¯
char temp = *p1; // 注æä¸æ¯ char*
*p1 = *p2;
*p2 = temp;
这样处理有两个疑问:
temp是指针呀,指针该指向地址的嘛,可是这里直接就是一个值,如果我写成这样:
char *temp = p1;
*p1 = *p2;
*p2 = *temp;
我的想法是把第一个字符的地址,现在就是p1等于temp,然后交换p1和p2的值,这样的处理可是还是错误的!
你写为
char temp;
temp=*p1;
*p1=*p2;
*p2=temp;
再试试看。
C语言指针的一个问题
(1) 第一个框里的代码 short* temp = *p1; 等价于下面的两条语句:short* temp;temp = *p1;所以,后面 p2=temp;和上面是一致的, 没错.(2)第二个框里的代码 没错, 指针就一个该指向指针, 但是你这里赋值一个值.这种做法是错误的, 不过对C语言来说, "错的"的意思是"不能保证正确", ...
关于C语言结构体指针的一个疑问?
出现此问题的原因在于链表创建create函数有问题,问题定位在图中红色框内。此处每个节点使用的是局部变量,函数结束后,局部堆栈虽然内容不会清除,但内存会被回收,如果其它地方也使用堆栈可能会分给它用,内存内容就会改变。正确的方式是申请堆内存。使用malloc函数,同时包含头文件#include<stdlib.h>。框内...
关于C语言指针的一个问题?
图中1处指针p没有初始化,它没有指向任何内存单元不能进行图中2处的赋值写入操作,这里会程序崩溃退出。
C语言指针问题。
这是一个运算顺序的问题。注意括号的运用。(1) ++(*pointer)是先取值,再自增,当前pointer指向的是位置arr[3],取值后是2,*pointer的结果是2,2再自增,当然会得出3。值得说明的是,这个括号是可以省略的,此处括号只起到增加程序可读性的作用。(2)*(pointer-2)是先移动指针,再取值。p...
c语言指针问题,求解答
D 定义指向函数的指针pf,函数参数为int,char型(不符题意,题目为int,char*),无返回值 B、D的定义为:定义函数pf,函数参数为空,返回类型为void *(void 型指针)单从函数指针的定义可排除BCD。其次,指针赋值 函数名与数组名性质类似:数组名为数组内第一个数据的地址,即a[10],则a==&a[...
C语言关于指针的一题。
{ int a[]={2,4,6},*prt=&a[0],x=8,y,z; \/*定义整形数组a,把2、4、6依次存入数组a的前三个地址 中,定义一个整形指针prt,并把数组a中首地址的值赋值给 prt指向的地址中*\/ for(y=0;y<3;y++)z=(*(prt+y)<x)?*(prt+y):x; \/\/把prt指向的值与x进行比较,把小的...
C语言指针问题
一、如有定义char y[4]= "321"则表达式 *y+2的值是'5' 。分析:y是字符串数组首元素'3'的地址,*y的值就是字符'3',再加上2,就是字符'5'(也可以说是字符'5'的ASC码值)。二、 如有定义char z[2][4]={"MAT", "LAB"};,则表达式*(*z+2)的值是 'T'。分析:z是二维字符...
一个C语言指针问题。求大佬解答?
在这个程序中,我们首先提示用户输入方阵的尺寸,然后输入方阵的元素。接着,我们通过遍历方阵的每一行,并使用指针指向每行对应列的元素,来求出方阵对角线元素之和。最后,我们输出结果。程序的输出示例如下:include <stdio.h> int main(){ \/\/ 方阵的尺寸 int n;printf("Enter the size of the ...
c语言问题,关于指针的问题
一、比如我们定义一个int型指针变量。int *p=NULL;初值为空。那么当执行while(p);时,只有p==NULL时,while循环才会结束。所以如果我们写while(p);printf。。。;那么只有当p为空时,后面的printf才会执行。否则就一直循环,这样我们就能判断p为空了。同理!p,自然就能判断p不为空了。二、p...
c语言,指针指向另一个指针的问题,为什么报错?
图中红色框内代码有误,*(p+5)不是表示指针而是值。应改为 q = p+5 另外补充说明,改成这样虽然没有语法错误,但是很明显p+5已经超过数组a的内存空间,需要注意。