永发信息网

关于C语言中指针赋值的问题

答案:3  悬赏:50  手机版
解决时间 2021-02-19 15:34
怎样给指针赋值算是合法的。。指针的值要指向一个具体的变量?但是貌似可以这样的赋值
int a,*p;*p=a;
a并没有具体的值但是指针能这样赋值
还有指针之间相互赋值有什么条件?具体点~~~
最佳答案
指针赋值问题:
1指针如何赋值?
如 int *p,**q,a; *p=1;*p=a; **q=a; 语法正确,但是p没有指向任何地址。
因为在内存中指针分配的空间与变量分配的空间是不同的。
变量分配的是栈区(具体的) 指针分配的是堆区(按要求的)如char *p; *p='a'; *p="aaaaa" 都正确。
在计算机读取数据是是读地址后然后找到地址里面的内容。
指针p是一个存放地址的变量,他本身有地址一样能输出他的地址。
但a=1 ;*p=a 只代 p的内容为1,a的内容为1 。诺改为 a=1;p=&a ; *p=2;则p的内容为a的地址,a的内容为2
详细代码:
main()
{
int *p,a=99;
*p=a;
*p=33;
printf("%d,%d",*p,a);
}
结果:33,99 //p值变,a值不变,因为p根本没有指向a的地址,先就说了计算机是根据地址找到后读取里的内容,你只是赋值,没指地址所以没有改变。
main()
{
int *p,a=99;
p=&a;
*p=9999;
priintf("%d,%d",*p,a);
}
结果:9999,9999 //因为改变了地址,所以p的值改变则a的值也会改变,,,
全部回答
int a,*p;p=&ap是一个指针,用来存放地址,所以应该吧变量a的地址赋给p
你这样想说明你还没有真正理解内存和指针。inta;表示编译器随机取出一个空闲的地址分配给a,不妨设为00000000,长度为sizeof(int),不同编译器可能不同。int*p;也表示随机取出一个空闲的地址分配给p,不妨设为000000f0,长度一般为4个字节,则这四个字节现在存储的内容是不确定的,假设为00000ff0,那么*p表示地址00000ff0上的值。*p=a则把地址00000ff0的值变为a的值,显然如果该地址目前正在被某个进程使用,就有可能破坏该进程,因此这种方法是十分危险的。给指针赋值一般有两种方法,一种是将已经存在的变量的地址传递给指针,格式为:p=&a;另一种是首先为指针申请指向的合法内存,c语言中用函数malloc(),然后给已申请的地址赋值,如*p=6。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
埃及14天签证可以申请延期吗
垫江道/大江路(路口)在什么地方啊,我要过去
三星s5我的文件里的那个文档里的东西能删掉吗
【what the fucking climate,which always we
人类染色体可以分几组?其中x染色体分在几组?y
是不是碧生源常菁茶和常润茶都可以治便秘?_
数学小报里能有什么内容
山东省立医院-住院部这个地址在什么地方,我
家里网络突然断了 就今天早上 为什么
ipone6plus和ipone6splus的区别
加油机键盘失灵怎么办
恒温恒容容器,各气体物质物质的量和什么因素
雅阁转向助力泵油多久换一次
微信中保存在相册的图片怎么删除
一、翻译英文 1.挨着墙
推荐资讯
鹿晗在ex0的哪一队是m队还是…?求解答
忧伤而复杂的心情是啥意思?
【传递爱心的精美句子】关于传递爱心的诗句
谁知道这两个按钮一个是写着A/C的另一个写着A
怎么把试卷弄成电子版
撒类撒类撒类拉巴进吧英文歌叫什么
董记黄焖鸡在哪里啊,我有事要去这个地方
关于报关发票金额的四舍五入
思琪幼儿园(西北门)我想知道这个在什么地方
新轩逸刹车刹不住4s店说没问题怎么办
如何才能进入证券公司当分析师
天龙av5000功放电源不亮?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?