c++-C++指针赋值问题,求帮助!

问题描述

C++指针赋值问题,求帮助!
 int a=12;
int b;
int *p;
int **ptr;
p=&a;//&a的结果是一个指针,类型是int*,指向的类型是int,指向的地址是a的地址。
*p=24;//*p的结果,在这里它的类型是int,它所占用的地址是p所指向的地址,显然,*p就是变量a。
ptr=&p;//&p的结果是个指针,该指针的类型是p的类型加个*,在这里是int**。该指针所指向的类型是p的类型,这里是int*。该指针所指向的地址就是指针p自己的地址。
*ptr=&b;//*ptr是个指针,&b的结果也是个指针,且这两个指针的类型和所指向的类型是一样的,所以?amp;b来给*ptr赋值就是毫无问题的了。
**ptr=34;//*ptr的结果是ptr所指向的东西,在这里是一个指针,对这个指针再做一次*运算,结果就是一个int类型的变量。

其中的*p=24,是否正确,在书本上看到,指针时不允许赋予数字的,只有当const修饰的时候可以,应该是真个样子,很迷茫,可以帮忙解决一下吗:

解决方案

p=24才叫“指针赋予数字”,这是不允许的,因为不知道24指向的地址里是什么。
*p=24是把指针指向的位置的值进行赋值,所以没问题。

解决方案二:

一个是指针本身的值,也就是地址。所以赋值就是修改地址。一个是指针指向的值。赋值就是修改指针所指向的数值

解决方案三:

指针是指向地址, *p=24 p为地址 *p 是读取地址里面的内容, 给地址里面的内容赋值是没有问题的

解决方案四:

*p是对指针p的解引用,可以对p指向的内容赋值,*p=24是将a的内容改变了。

解决方案五:

*p=24不是对指针进行赋值,而是对指针所指的内存单元进行赋值,是可以的

解决方案六:

http://blog.csdn.net/ascdfwsfrfadfg/article/details/47067261

解决方案七:

C++:指针问题
C++与指针有关的问题

解决方案八:

赋值应该对指针所指变量赋值,也就是*p=24

解决方案九:

赋值应该对指针所指变量赋值,也就是*p=24

解决方案十:

*p=24已经解引用了,*p已经不是指针了,当然没问题

时间: 2024-11-01 02:08:17

c++-C++指针赋值问题,求帮助!的相关文章

指针删除操作 指针赋值 错误

问题描述 指针删除操作 指针赋值 错误 #include "stdafx.h" #include using namespace std; int _tmain(int argc, _TCHAR* argv[]) { int *p,*q; p = new int[10]; p[0] = 2; p[1] = 1; cout << "********"<< endl; q = p+1; cout << *q <<endl;

javascript-关于js的赋值问题 求大神指教

问题描述 关于js的赋值问题 求大神指教 比如 var a = b; b.id = 123; delete b.id; 这样a的id也没有了 有没有什么办法是删了b的id ,a的id还在 解决方案 var a={}; a.id=123; var b=Object.create(a); 这样写就行.b是一个新对象,跟a没关系. 解决方案二: 克隆下对象,直接赋值是地址引用javascript中对象的深度克隆 解决方案三: Clone,这样a和b就没有任何引用关闭

图片-C语言 a[0] 数组首地址只能给指针赋值吗 (a代表某数组)

问题描述 C语言 a[0] 数组首地址只能给指针赋值吗 (a代表某数组) 如果不是的话,为什么下面的代码会出错: 解决方案 因为类型不同,min是int类型,而&a[0]是int * 类型 解决方案二: 把 int mix=&a[0]; int max=&a[0]; 改成 把 int *mix=&a[0]; int *max=&a[0]; 就好了.另外,单词拼错了,最小值是min不是mix. 解决方案三: a[0]是值,&a[0]是数组首地址,加&报

select-MSSQL表名使用变量如何查询和赋值,求大大们帮忙!

问题描述 MSSQL表名使用变量如何查询和赋值,求大大们帮忙! @NAME我使用while进行循环赋值,所以这里只能使用变量,下面要对@A赋查询到的值 SET @A = (SELECT ISNULL("1月",0) FROM @NAME+'预算$' WHERE 项目='考核业绩' ) 报错 SET @A = EXEC('SELECT ISNULL("1月",0) FROM' + @NAME + '预算$ WHERE 项目=' + '考核业绩' )也报错,求救!!就是

c语言-给指针赋值可以是什么样的

问题描述 给指针赋值可以是什么样的 这个里面c3是一个指针,可以给他赋字符串吗?如果可以那是不是说明字符串只是一个地址呢(的第一个字符的地址) 解决方案 指针本身也是一个整型数据,可以赋予任何值,但指向有没有意义由程序员决定.直接将字符串赋予指针,编译器编译时会将字符串作为常量存储,并且将存储首地址赋予这个指针.所以可以给指针赋值字符串,但字符串不是一个地址. 解决方案二: 指针赋值的问题指针赋值的问题字符指针赋值 解决方案三: 字符串不是地址,只是一般我们要使用某个字符串的时候都是用它的地址表

调试-简单的指针数组问题求debug

问题描述 简单的指针数组问题求debug 1. #include<stdio.h> 2. main() 3. { 4. int i; 5. char *name[]={"File","Edit","Write","Read","Exit"}; 6. char **p; 7. p=name; 8. for(i=0;i<5;i++) 9. { 10. printf("%s "

malloc-c语言指针问题,求大神,新手。

问题描述 c语言指针问题,求大神,新手. #include #include #include struct Student { int age; char name[100]; float score; }; void Ininformation(int * IP_len, struct Student * IP_arr) { int i; for (i = 0; i < *IP_len; ++i) { printf("请输入%d个学生信息: ", *IP_len); prin

c++关于数组指针赋值问题

问题描述 c++关于数组指针赋值问题 这段赋值语句 下面这段语句是错的 void setArc(char start, char end) { int i; for(i=0;i<Vexnum;i++) { if(vex[i].ch == start) { while(vex[i].next) { vex[i] = *vex[i].next; } ArcNode *nNode = new ArcNode; nNode->ch = end; vex[i].next = nNode; } } } 我

结构体中指针赋值问题的分析及C代码示例

问题描述 某结构体的定义如下: typedef struct { int iAge; // 年龄 char szAddr1[100]; // 地址1 char *pszAddr2; // 地址2 char **pszAddr3; // 地址3 } T_PeopleInfo; 请问如何对结构体中的各个成员变量(尤其是指针变量)进行赋值? 问题分析及C代码示例 我们可以看到,在结构体T_PeopleInfo中,pszAddr2和pszAddr3均为指针,其中pszAddr2为一级指针,pszAddr