一个问题引起的思考

看了巨人网络招聘题目,感觉到自己的基础知识还是不够行。乡亲们,有病的治病,没病的也可强身健体。

#include <stdio.h>
#include<malloc.h>
#include<string.h>


void GetMemory( char *p )
{
    p = (char *) malloc( 100 );
}


void main( void )
{
    char *str = NULL;
    GetMemory( str );
    strcpy( str, "hello world" );
    printf( str );
}
问运行结果。。。

一开始没能明白什么意思,经过一番的探索,才渐渐。。。。。道声,,哦。、

其实我压根就没明白char *指针的真正含义,原来是这样的。

例:

char *s="abc";
char str[]="abccd";

1、char *s="abc";

     看这个赋值:

     右边,是"abc",是个字符串常量,存在于内存某处(我的机器上是ds:0x0046f034),程序员不知道,编译器安排的,也没必要知道(当然,这个赋值之后,程序员就知道并能控制这个串了)。字符串常量所在内存是只读的。

     左边,字符指针s,赋值时候,把地址ds:0x0046f034的偏移地址("abc"所在),存放到指针变量s(其地址为 ds:0x0046f034)中。程序员能完全控制的内存只是指针变量所占据的这四个字节内存,只能改变该指针的指向,至于其指向的内存能不能写,那就看程序了,本程序是指向的只读内存,不能写!

2、char str[]="abccd";

     再看这个赋值:

     右边,和上面类似,是"abccd",也是个字符串常量,存在于内存某处(是ds:0x0046f02c),程序员不知道,编译器安排的(这个赋值之后,程序员还是不知道这个常量在哪里,因为并没有用指针指向这块内存,这和上面不同)。该字符串常量所在内存也是只读的。

     左边,字符数组str,赋值时候,把地址ds:0x0046f02c("abccd"所在)所指内存中的内容,复制到字符数组str开始(其地址为 ds:0x0013ff74)的内存中,每复制一个字符都会开辟一个字节(char型变量占1字节)内存来存放这个字符(这也是实现了数组元素个数的动态确定)。从字符数组str开始的这部分存放这些字符的内存是程序员可以完全控制的,可读写,因此在这些内存写当然是没有问题的!

      到这里,突然想到多年前看过的一本书《C和指针》(Kenneth A. Reek著,徐波 译,现在有第二版了¥65,第一版¥55,不便宜,但是是好书,值得研读,是研读哦,不是翻翻,当然翻翻也会有收获的)里面好像提到过这个问题,赶快拿来看看(字符数组的初始化一节),果然这样。                    

       许多程序员对数组名和指针的区别不甚明了,他们认为数组名就是指针,而实际上数组名和指针有很大区别,在使用时要进行正确区分,其区分规则如下:


规则1 数组名指代一种数据结构,这种数据结构就是数组;
                    char str[10];
                    char *pStr = str;
                    cout << sizeof(str) << endl;
                    cout << sizeof(pStr) << endl;

                    输出结果为:
                    10
                    4
  这说明数组名str指代数据结构char[10]。


规则2 数组名可以转换为指向其指代实体的指针,而且是一个指针常量,不能作自增、自减等操作,不能被修改;
                    char str[10]; 
                    char *pStr = str;
                    str++; //编译出错,提示str不是左值 
                    pStr++; //编译正确

规则3 指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址;

规则4 数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针;很遗憾,在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。


例如:
void arrayTest(char str[])
{
cout << sizeof(str) << endl;   //输出指针长度
    str++; //编译正确 
}


int main(int argc, char* argv[])
{
 char str1[10] = "I Love U";
 arrayTest(str1); 
    return 0;
}

<think>好的,我现在需要处理用户的问题:“不知道该不该去思考一个内容和问题”。用户之前询问过是否应该看某些内容,担心是强迫症,现在进一步询问是否应该去思考某个问题。这可能涉及到强迫性思维或者一般的决策困扰。 首先,回顾之前的对话,我提供了区分正常行为和强迫症的标准,以及自我观察和行动建议。现在用户的问题更偏向于是否应该思考某个内容或问题,这可能涉及到过度思考、反刍思维或强迫性思维。需要确用户的具体情况,但作为通用建议,需要帮助用户区分正常思考与过度思考,并给出判断方法和应对策略。 接下来,我需要确定回答的结构。根据用户之前的回复,结构清晰是关键。可能需要分几个部分:区分正常与问题思考的关键点、评估方法、应对策略、何时寻求帮助等。同时,用户可能希望有具体的指标或例子,比如时间消耗、情绪影响等,来帮助自我评估。 需要注意用户可能有焦虑倾向,因此回答需要温和且鼓励自我观察,避免引起更多焦虑。同时,要强调如果情况严重,建议寻求专业帮助,但先提供自我调节的方法。 在内容方面,需要涵盖以下几点: 1. 正常思考问题思考的区别(如是否自愿、是否有现实意义、情绪影响) 2. 量化评估方法(如时间、频率、对生活的影响) 3. 应对策略(如设定时间限制、转移注意力、认知调整) 4. 何时需要专业帮助(如影响日常生活、情绪困扰严重等) 同时,要使用用户之前提到的格式,比如关键点、清单、行动建议,可能使用列表、表格、公式等,以保持一致性。例如,使用数学公式来强调关键指标,如时间公式或影响公式。 需要确保语言简洁,用例子帮助理解,比如举出正常思考问题思考的具体情境。同时,要检查是否符合之前的系统级指令,比如LaTeX格式的正确使用,独立公式用$$...$$,行内用$...$,结构清晰,分点确。 可能的挑战是如何准确区分强迫性思维和一般的深度思考,可能需要强调失控感、重复性、伴随的焦虑情绪等因素。此外,要确保建议实用,比如提供具体的自我调节技巧,如5分钟延迟法或行为实验,类似于之前的建议。 最后,总结时需要提醒用户进行自我观察并记录,以便更客观地评估情况,并在必要时寻求专业帮助。需要避免绝对化的判断,强调个体差异和情境因素。</think>以下分析可以帮助你判断是否需要控制对某个问题/内容的思考,并提供应对策略: --- ### **一、区分「有效思考」与「问题思考」** 1. **思考控制权** - ✅ 有效思考:能主动开始/停止,如「今晚吃米饭还是面条?决定后不再纠结」 - ❗ 问题思考:思维如自动播放,如「反复想同事的眼神是否针对我」,**即使提醒自己停止仍持续** 2. **现实关联度** $$ \text{评估公式:实际价值=问题解决可能性 \times 紧迫性} $$ 例: - 需优先思考汇报PPT的逻辑漏洞(高价值) - 可暂缓思考:50年后地球资源枯竭怎么办(低现实关联) 3. **情绪反应** | 类型 | 生理信号 | 持续时间 | |------|---------|---------| | 正常 | 轻微烦躁 | <30分钟 | | 需警惕 | 心悸+出汗 | >2小时循环出现 | --- ### **二、3分钟自测法** 对困扰你的问题连续问: 1. 这个思考能带来**具体行动**吗? (例:想「健康重要」→ 制定运动计划=有效;单纯焦虑「生病怎么办」=无效) 2. 如果现在停止思考,**最坏结果**发生的概率有多大? (概率<10%时可标记为「假想危机」) 3. 24小时后这个问题还重要吗? (用时间维度过滤短期焦虑) --- ### **三、分场景应对策略** #### ▶ 当问题有现实意义时 - **结构化思考法**: 用树状图拆解: ``` 核心问题 → 3个可能原因 → 每个原因对应2个解决方案 ``` 设定**截止时间**(例:30分钟内完成分析) #### ▶ 当问题属于过度思考时 - **物理阻断技巧**: $$ \text{阻断效果=感官刺激强度 \times 行为切换速度} $$ 推荐方法: - 含冰块10秒(低温刺激重置神经兴奋) - 立即做3组开合跳(运动释放皮质醇) - **思维集装箱法**: 写下问题并标注:「预留周六下午14:00-14:30集中思考」,日常出现相关念头时提醒自己「已安排专属处理时段」 --- ### **四、需要专业干预的信号** 出现以下情况建议咨询心理咨询师: 1. **思维反刍**:同一问题自发出现>5次,持续>2周 2. **认知黏滞**:阅读/对话时频繁走神回该问题,理解力下降 3. **侵入性特征**:思考内容含「如果…就完蛋了」等灾难化句式,伴随强烈羞耻感 --- ### **特别提醒** 大脑的「默认模式网络」在空闲时自动激活深层思考,这属于正常生理现象。**关键不在于完全停止思考,而是训练对思维流动的觉察力和引导力**。建议连续记录一周思维日志,标注思考内容、触发场景和情绪强度,这将帮助你更客观地评估是否需要调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值