C++中指针里面的*怎么用
答案:2 悬赏:60
解决时间 2021-03-10 12:18
- 提问者网友:浩歌待明月
- 2021-03-09 13:57
C++中指针里面的*怎么用
最佳答案
- 二级知识专家网友:荒野風
- 2021-03-09 14:44
在声明语句中的“*”是与前面的类型符号配合的,而不是与后面的变量名配合的,如int *p;是声明了一个int *型指针变量p,而不是一个int型变量*p;指针变量是p,所以后面赋值时不得再加"*"。
指针p并没有赋值,是野指针,不能作右值。
运算表达式中单独的“*”基本就两种情况:一是在指针前,它是取指针所指对象的值;二是在两个变量间,它是乘号。*p2 = *p1 * *p2;的意思是*p2 = (*p1) * (*p2);,它就是把p1指向的变量的值即i的值乘以p2指向的变量的值即j的值,将其结果赋给p2指向的变量即j。所以这里p1、p2前面的“*”是取值操作符,显然和声明语句中的"*"不是一回事。
mat = new int *[nMaxRow];在[nMaxRow]前的*的意义已在第一问中回答了,它是与int配合使用的,意思是创建一个元素个数为nMaxRow的存放int *型指针的动态数组,将将第一个元素的地址赋给指针变量mat。
追问看懂了一些,但还是有点小问题
2.p不是获得了ival的地址了吗?那p不是应该赋值为1024吗?
4.mat = new int *[nMaxRow];和matRow = new int[nMaxRow];有什么区别?
麻烦再回答一下啊~十分感谢!追答2 是我说错了,当时怎么弄的我也想不起来了。问题在于q还没有赋值,它的第下级指针*q就是野指针。要先为q赋值,才会有*q。
4.mat = new int *[nMaxRow];是创建一个长度为nMaxRow的数组,这个数组的每一个元素都是int *型指针,并把第一个元素的地址赋给mat指针(显然这里mat是二级指针)。matRow = new int[nMaxRow];是创建一个长度为nMaxRow的数组,这个数组的每一个元素都是int型变量,并把第一个元素的地址赋给指针matRow,显然这里matRow是指向int变量的一级指针。
指针p并没有赋值,是野指针,不能作右值。
运算表达式中单独的“*”基本就两种情况:一是在指针前,它是取指针所指对象的值;二是在两个变量间,它是乘号。*p2 = *p1 * *p2;的意思是*p2 = (*p1) * (*p2);,它就是把p1指向的变量的值即i的值乘以p2指向的变量的值即j的值,将其结果赋给p2指向的变量即j。所以这里p1、p2前面的“*”是取值操作符,显然和声明语句中的"*"不是一回事。
mat = new int *[nMaxRow];在[nMaxRow]前的*的意义已在第一问中回答了,它是与int配合使用的,意思是创建一个元素个数为nMaxRow的存放int *型指针的动态数组,将将第一个元素的地址赋给指针变量mat。
追问看懂了一些,但还是有点小问题
2.p不是获得了ival的地址了吗?那p不是应该赋值为1024吗?
4.mat = new int *[nMaxRow];和matRow = new int[nMaxRow];有什么区别?
麻烦再回答一下啊~十分感谢!追答2 是我说错了,当时怎么弄的我也想不起来了。问题在于q还没有赋值,它的第下级指针*q就是野指针。要先为q赋值,才会有*q。
4.mat = new int *[nMaxRow];是创建一个长度为nMaxRow的数组,这个数组的每一个元素都是int *型指针,并把第一个元素的地址赋给mat指针(显然这里mat是二级指针)。matRow = new int[nMaxRow];是创建一个长度为nMaxRow的数组,这个数组的每一个元素都是int型变量,并把第一个元素的地址赋给指针matRow,显然这里matRow是指向int变量的一级指针。
全部回答
- 1楼网友:天凉才是好个秋
- 2021-03-09 15:00
我暂时保留我的看法!
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯