http://www.cnblogs.com/qingjoin/archive/2012/03/20/2408944.html

#include <stdio.h>

#define JUDGE_POINT_TWO 1

int main()
{
#if JUDGE_POINT_TWO
char str[] = "qingjoin";
char *ptr = "c program";
char *point; point = str;
point[] = 'a';
point[] = 'x';
printf("str=%s\n",str); ptr[] = 'm'; //这个地方是错误的 printf("ptr=%s\n",ptr);
#endif
} 编译结果:
# gcc test_point.c -o test_point
# ./test_point
str=qiaxjoin
Segmentation fault //char str[] = "qingjoin"; str就数组变量,当地址赋给point后。point[2]就是str[2],它的内容是可以改变的 //char *ptr = "c program"; 它是先定义一个常量,"c program" 这个常量是定义在“栈”里面,然后将这个常量的地址赋给ptr,而不是*ptr。常量是不能被修改的 所以ptr[13] = 'm'; 就会出错
 
#include <stdio.h>

#define JUDGE_ONE 1 

int main ()
{
#if JUDGE_ONE
int i = ;
int num[] = {,,,}; int *p;
p = &i; /**************************************************
这样是正确的, 或int *p = &i 但 int *p=i这样的话就是错误的
如果是 *p = i 这样编译时是不会出现错误,但程序运行的时候会出现段错误
原因是没有给 p 分配内存它没有空间去存放i 的值
**************************************************/ char *str;
*str = "qingjoin"; // 这种写法是错误的。因为"qingjoin"是字符串,也是数组,在这里它是常量
str = "qingjoin" ; // 这种才是正确的 ,赋值的时候赋的是地址,它只能赋给指针变量str;
printf("%d\n",*p);
#endif
}
 
     int w[];
int *pw=w ; // pw表示数组w ,或者说指向变量w[0]
int *q=&w[]; // q指向变量w[2]
int rr[][],(*pr)[]; /* pr是指向一维数组的指针,该一维数组 有5个元素,每个元素是一个整数 */
pr=rr; // pr指向一维数组rr[0],该rr[0]有5个元素
int *qr[]; /* qr是指针数组,有5个元素,每个元素是一个指向 int类型变量的指针 */
int *(tr[]); /* 同qr 。tr是指针数组,有5个元素,每个元素是 一个指向int类型变量的指针 */
qr[]=&y; // qr[1]指向变量 y
 

[转载]c语言指针segmentation fault 指针常常错误的小地方的更多相关文章

  1. Segmentation fault (core dumped) 错误的一种解决场景

    错误类型 Segmentation fault (core dumped) 产生原因 Segmentation fault 段错误. Core Dump 核心转储(是操作系统在进程收到某些信号而终止运 ...

  2. C++中Segmentation fault(Core Dump)错误处理

    什么是Core Dump? Core的意思是内存, Dump的意思是扔出来, 堆出来. 开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped ...

  3. conda pip 安装 dgl 并运行demo 出现:Segmentation fault (core dumped) 错误

    安装dgl 并运行的时候,出现了如上错误,很是郁闷:使用 gdb python; run train.py 进行调试,发现是torch的问题:我猜测估计是torch 安装的版本过于新:于是重新安装 1 ...

  4. 论Segmentation fault

    刚开始学c的时候,最头疼的事情是编译总是通不过,郁闷的要死,只要编译通过了,就兴奋的要死.现在,最头疼的事情是什么呢,编译没问题,但是程序跑的时候会出现Segmentation fault! 这个东西 ...

  5. Linux下的段错误(Segmentation fault)

    Linux下的段错误(Segmentation fault) 段错误是指:访问了系统分配给程序的内存空间之外起的内存空间,比如: 访问不存在的地址 访问受系统保护的地址 访问了只读内存地址 内存访问越 ...

  6. 内存分配与Segmentation fault

    为了方便使用,我做了如下结构体的嵌套使用: struct operation{ int num; char name[100]; char owner[100]; char msg[100];}; s ...

  7. 结构体指针之 段错误 具体解释(segmentation fault)

    一个网友问了我一个问题.一个C程序执行出现了段错误,这个问题非常好.非常多刚開始学习的人都easy犯这个错误,详细代码例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3 ...

  8. 【转载】C/C++语言void及void指针深层探索

    C/C++语言void及void指针深层探索 1.概述许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并详述vo ...

  9. (转载)c语言指针学习

    前言 近期俄罗斯的陨石.四月的血月.五月北京的飞雪以及天朝各种血腥和混乱,给人一种不详的预感.佛祖说的末法时期,五浊恶世 ,十恶之世,人再无心法约束,道德沦丧,和现在正好吻合.尤其是在天朝,空气,水, ...

随机推荐

  1. talib 中文文档(十):Price Transform Functions 价格指标

    Price Transform Functions AVGPRICE - Average Price 函数名:AVGPRICE 名称:平均价格函数 real = AVGPRICE(open, high ...

  2. python三层架构

    conf/setting(配置文件)    一般是对utility进行相关设置   index(主文件) main函数触发某个对象的业务逻辑方法   model(数据库) admin  是对数据库的操 ...

  3. SSL/TSL握手过程详解

    1. Client Hello 握手第一步是客户端向服务端发送 Client Hello 消息,这个消息里包含了一个客户端生成的随机数 Random1.客户端支持的加密套件(Support Ciphe ...

  4. link标签 rel="stylesheet"

    首先,link标签是用于当前文档引用外部文档的,其次,这个标签的rel属性用于设置对象和链接目的间的关系,说白了就是指明你链进来的对象是个什么东西的,具体的值及其所表示的关系如下:Alternate: ...

  5. Vim简明教程【CoolShell】(转)

    m的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progressiv ...

  6. deepin中crossover或playonlinux装完office后word无法输入中文的问题

    原因:office安装是自带了一个微软输入法 解决:装offce时进行自定义安装,在office共享功能里,把输入法去掉. 参考: https://jingyan.baidu.com/article/ ...

  7. 裸眼 3D 技术是什么原理?

    https://www.zhihu.com/question/19553745 作者:杨英东链接:https://www.zhihu.com/question/19553745/answer/1227 ...

  8. Linux 笔记 #04# Installing Tomcat 8 on Debian

    失败一 ※ 失败二  ※ 失败三 ※ 完 1- 确认机型: root@iZwz:~# lsb_release -a LSB Version: core-2.0-amd64:core-2.0-noarc ...

  9. 隐藏Apche、Nginx、PHP的版本号提高网站安全性

    隐藏Apache版本号 在apache配置文件httpd.conf中,加入以下代码 ServerTokens Prod ServerSignature Off 隐藏Nginx版本号 在nginx的配置 ...

  10. bzoj1008 / P3197 [HNOI2008]越狱

    P3197 [HNOI2008]越狱 考虑所有状况:显然是$m^{n}$ 考虑所有不合法状况: 显然相邻两个数不相等 那么后面$n-1$个数就有$(m-1)^{n-1}$种取法 第一个数前面没有相邻的 ...