博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言指针segmentation fault 指针常常错误的小地方
阅读量:6581 次
发布时间:2019-06-24

本文共 1494 字,大约阅读时间需要 4 分钟。

#include 
#define JUDGE_POINT_TWO 1 int main() {
#if JUDGE_POINT_TWO char str[] = "qingjoin"; char *ptr = "c program"; char *point; point = str; point[2] = 'a'; point[3] = 'x'; printf("str=%s\n",str); ptr[13] = '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 
#define JUDGE_ONE 1 int main () {
#if JUDGE_ONE int i = 129; int num[] = {
20,30,40,50}; 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[5]; int *pw=w ; // pw表示数组w ,或者说指向变量w[0]      int *q=&w[2]; // q指向变量w[2]      int rr[10][5],(*pr)[5]; /* pr是指向一维数组的指针,该一维数组 有5个元素,每个元素是一个整数 */      pr=rr; // pr指向一维数组rr[0],该rr[0]有5个元素      int *qr[5]; /* qr是指针数组,有5个元素,每个元素是一个指向 int类型变量的指针 */ int *(tr[5]); /* 同qr 。tr是指针数组,有5个元素,每个元素是 一个指向int类型变量的指针 */      qr[1]=&y; // qr[1]指向变量 y
 
 

转载地址:http://dzino.baihongyu.com/

你可能感兴趣的文章
Jolt大奖获奖图书
查看>>
android中webview空间通过Img 标签显示sd卡中 的图片
查看>>
ubuntu 16.04 安装PhpMyAdmin
查看>>
安卓开启多个服务
查看>>
设置分录行按钮监听事件
查看>>
C Primer Plus 第5章 运算符、表达式和语句 5.2基本运算符
查看>>
java并发库之Executors常用的创建ExecutorService的几个方法说明
查看>>
23种设计模式(1):单例模式
查看>>
socket 编程入门教程(五)UDP原理:4、“有连接”的UDP
查看>>
Jquery获取iframe中的元素
查看>>
Laravel 学习笔记5.3之 Query Builder 源码解析(下)
查看>>
Struts2简单入门实例
查看>>
2012CSDN年度博客之星评选http://vote.blog.csdn.net/item/blogstar/xyz_lmn
查看>>
BZOJ 4037 [HAOI2015]数字串拆分 ——动态规划
查看>>
SpringBoot实战总汇--详解
查看>>
2018年7月1日笔记
查看>>
尝试使用iReport4.7(基于Ubuntu Desktop 12.04 LTS)
查看>>
动态规划:金矿模型
查看>>
子元素应该margin-top为何会影响父元素【转】
查看>>
AJAX 状态值(readyState)与状态码(status)详解
查看>>