C_and_CPP 板


LINE

※ 引述《giveatry (new life)》之铭言: : ※ 引述《giveatry (new life)》之铭言: : : #include <stdio.h> : : int main(){ : : int* c = 1; : : printf("c++ is %d\n", c++); : : printf("c is %d\n", c); : : return 0; : : } : : 印出来的结果 : : c++ is 1 : : c is 5 : : 为什麽会这样呢ꄊ: : 谢谢 : 我改成这样的时候 : #include <stdio.h> : #include <stdlib.h> : int main(){ : int* c = (int*)malloc(sizeof(int)*1); : *c = 1; : printf("c++ is %d\n", c++); : printf("c is %d\n", c); : return 0; : } : 印出来的结果是 : c++ is 159821832 : c is 159821836 : 改成这样的话,好像就是印记忆体位置了 : 愈搞愈迷糊了@@ 虽然我不常写c不过看好像没人要理你这个问题 我就来点你一下好了,先说~我是看你的实验说故事的 你第一个宣告指标c int* c=1; 是把指标c指到1这个位置了 而 printf("c++ is %d\n", c++); 印出了c这个指标位置1 再移到下一个位置 不过你宣告的是int这个有4个byte,所以跳4,因此你看到的+4是这边来的 第二个int* c = (int*)malloc(sizeof(int)*1); 这个是你叫电脑帮你选出一个有一个int大小的位置,把c指向那边 电脑给你159821832这个位置,接下来你又作了一样的事情 所以呢,从头到尾差别只有 手动选号(1) 跟 电脑选号(159821832) 的差别而已 不过手动选号是很危险的 因为你不知道这号码有没有人在使用,除非你很确定 否则不要作这样的动作 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 58.115.26.253
1F:→ cheinhun:仔细看了一下推文..victortom大大好像解释一样的东西XD 06/28 02:15
2F:→ Cloud:应该是原PO的症结在於他不晓得 int* c=1; 06/28 09:06
3F:→ Cloud:printf("c++ is %d\n", c++); 也是在印出位置 06/28 09:06
4F:推 giveatry:感谢,我终於知道我的问题在哪里了…问题在int* c = 1 06/28 10:05
5F:推 giveatry:若是*c = 1,是指把c所指的值设为1。但是int*c =1和 06/28 10:18
6F:→ giveatry:*c = 1意义完全不同,我就是这样搞混了… 06/28 10:18
7F:推 in09:我怎麽觉得你还是不懂耶 "int* c = 1 *c = 1意义完全不同"?? 06/28 14:46
8F:→ giveatry:int* c = 1是宣告一个int指标并将其指向位址1 06/28 15:09
9F:→ giveatry:*c = 1是把指标c所指之值设为1,难道我又误解了吗? 06/28 15:09
10F:推 VictorTom:int *c = 1; 宣告指标变数c并使初值为1(指向1这个位址) 06/28 15:22
11F:→ VictorTom:*c = 1; 指标c目前所指的位址给定新值为1(被指位址给1) 06/28 15:23
12F:→ VictorTom:Ex: int *c = 0x0100; *c = 0x0010; 06/28 15:25
13F:→ VictorTom:则c会指到0x0100这个位址, 并让这个位址上的值变0x0010 06/28 15:25
14F:→ VictorTom:PS. 未确认的位址胡乱给值很危险的 XD 06/28 15:27
15F:推 giveatry:v大,所以我推文8,9行的理解看起来和你是一样的? 06/28 17:13
16F:→ cheinhun:你没误解啦 老实说要是我我也不会知道是那样 我从来不会 06/28 20:43
17F:→ cheinhun:像你那样写 因为pointer通常拿来动态宣告一个阵列或是写 06/28 20:44
18F:→ cheinhun:类似linked list这样的东西 你应该也只是试验而已 写程式 06/28 20:44
19F:→ cheinhun:就是这样啊 精神很不错的 06/28 20:44
20F:→ cheinhun:啊 还有call by reference也是pointer蛮重要的概念 其实 06/28 20:54
21F:→ cheinhun:爬文看看 上面很多人讨论过一样的东西唷 06/28 20:54
22F:推 VictorTom:其实我只是搞不清楚到底谁了解的情况怎麽办所以乾脆完整 06/28 23:39
23F:→ VictorTom:重推一次而已....XD 06/28 23:39







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP