2 laowangmomoda laowangmomoda 于 2016.04.10 15:55 提问

C++小白关于C++ primer中指针交换的问题

C++primer第五版的6.22题,要求是交换两个int指针。
#include
void exchange(int *&x,int *&y);
void exchange(int *&x,int *&y)
{
int *z;
z=x;
x=y;
y=z;
}
int main()
{
using namespace std;
int *p;
int *t;
int i=10;
int j=20;
*p=i;
*t=j;
exchange(p,t);
cout<<*p<<*t<<endl;
return 0;
}
以上是代码,在Dev-c++中无法编译,显示的信息是编译器已停止工作。请哪位好心的大神指点一下我代码中有什么问题

2个回答

cxsmarkchan
cxsmarkchan   2016.04.10 16:05
*p=i;
*t=j;

改成:

p=&i;
t=&j;
qq423399099
qq423399099   Ds   Rxr 2016.04.10 17:39

楼上正解。
你的p和t指针一开始指向了一个未知区域,你试图把i和j的值写入一个未知区域自然出现了异常

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【C】使用指针对数组中的元素换位问题
首先一条比较简单的问题: 输入10个整数,将其中最小的数字与第一个数字对换,把最大的数与最后一个数对换。 编写3个函数:(1)输入10个数字(2)进行处理(3)输出10个数字 思想如下图,使用一个长度为11的数组的第1~10位置存储这10个数,这样既符合人的思维又利用a[0]作为数据交换时候的临时存储空间, 代码如下,实现起来非常简单,主要是注意,C语言的指针是如何操作的,包括声明
C语言用指针实现两个数组值互换
C语言用指针实现两数组的值互换#include <stdio.h> #define N 10 void ReadData(int a[], int n); void PrintData(int a[], int n); void Swap(int *x, int *y); int main() { int a[N], b[N], i,n,k; printf("Input arra
链表的排序——冒泡(交换数据与交换指针)
交换数值排序: void sortList(Node * head, int len) { for(int i=0; i<len-1; i++) { Node * cur = head->next; for(int j=0; j<len-1-i;j++) { if(cur->data > cur->n
对今天看《c和指针》的一些感受
我之前自学过c语言,所以听别人介绍,去学习了《c和指针》。我的基础不是特别踏实,看了一会,觉得自己有好多东西都没有弄清楚。 我到现在才知道scanf返回的是它处理字符串的个数,我之前竟然也能用它编写程序! 额,我好像比较喜欢用fgets,细节细节。 刚才看的时候想了挺多,现在好像都有点忘记了,对了,我还知道了一些str函数的用法,汗! 我是看视频和c primer plus入门的,可能缺少实
C语言中如何用指针交换两个数的大小
如何用传址的方式交换两个数的大小 首先先看第一个程序,用函数的调用来解决看似正确实则运行出来的结果是错误的 #define _CRT_SECURE_NO_WARNINGS 1 #include #include #include int JH(int x, int y); int main() { int a, b; printf("请输入两个数:\n"); scanf("%d%d",
c语言之交换一个指针数组的值
#include <string.h> #include<stdlib.h> #include <stdio.h> #define N 4 int main() { void sort(char *name[], int n); void print(char **name, int n); char *string[N]={"You are so handsome!!","
【C语言】使用指针实现交换变量值
使用指针实现交换变量值
C语言中交换两个指针变量所指向的值
C语言中,指针变量有一级指针*p和二级指针**p,下面是使用指针交换两个变量的值。 1、使用一级指针交换: #include "stdafx.h" #include void swap(int* pt1,int* pt2){ int tmp; //交换前的信息 printf("pt1 = %p\n",pt1); printf("pt2 = %p\n",pt2); printf("
链表的排序(交换指针指向)
本学期c语言实习,要用到链表的排序。suishuo
C语言——经典的两个数互换的程序——更好的理解指针!!!
# include<stdio.h> int main(void) { void huhuan(int ,int); void huhuan_1(int *,int *); void huhuan_2(int *,int *); int a=3; int b=5; //huhuan(a,b); //huhuan_1(&a,&b); //huhuan