您好、欢迎来到现金彩票网!
当前位置:老k棋牌 > 栈区 >

你好我问一下char[]和char不都是存放在栈区的吗

发布时间:2019-06-27 08:07 来源:未知 编辑:admin

  我的那个代码函数传参的时候假如传指针不是没更改指针指向的内容吗,为什么会程序崩溃呢?还有char[],数组不就是指针吗,char[]和char*有什么区别啊?char*cStr=asAujlufAjunA;Repl...

  我的那个代码函数传参的时候假如传指针不是没更改指针指向的内容吗,为什么会程序崩溃呢?还有char[],数组不就是指针吗,char []和char * 有什么区别啊?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  后者呢是指针的概念了。其是创造了一个指针pStr, 让其指向了一个字符串常量abc.而字符串常量的内容是不可以更改的,所以char* pStr = abc;这个样子的字符串是不可以更改的。

  Replace(str, A, -); //这里传入str.不要被假象迷惑了,函数内的参数并非把数组内容都传进去了,这里传入的其实是数组的首地址,也就是 &str[0], 在这个例子中正好是str数组的第一个字符的地址 ,也就是那个 “a的地址”。

  当进入函数后,你说第一个参数是指针,指针式什么概念? 指针就是指向数据的地址的变量。呵呵。正好。在函数内部的指针char *str 恰好指向了外界那个 str[]数组的首地址,然后你在函数体内操作的指针其实都是在操作 那个main函数str数组了。

  上一条已经分析了。str是指向常量字符串的指针,所以str指向了一个不可更改的字符串首地址,也是a/*但是这个地址内容是不允许更改的*/, 进入函数后,函数内部的str指针 与 main里面的str指针相等,都是指向那个首地址的,所以在函数内操作的指针,就是在操作常量字符串。肯定崩溃。

  堆 与 栈 有什么区别。什么样的变量放在堆里面,什么样的变量放在栈里面。(这个可以慢慢来,多写几个例子,查看一下相关变量的地址来分析。)

  这个弄明白了,可以适当的了解程序的分区 文本区.text.数据区.data 什么的。这个只要了解就行,短期内不会用到的。

  定义的是一个指针,指向的是一个字符串常量,应该是分配在程序的数据段,这段代码在gcc下是有警告的

  如果你这样定义就对了 const char* str = asAujlufAjunA; (C++)不过当然,const是不能修改的,所以不能作为参数。

http://theenigmaco.com/zhanqu/172.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有