码迷,mamicode.com
首页 > 其他好文 > 详细

指针、变量名、指针所指向的内存

时间:2015-02-15 20:31:50      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

1.和在使用一个数据之前必须要对数据进行初始化一样,否则可能会使得数据的值不确定,那就会给程序埋下很大的隐患,在使用指针之前也必须要对指针进行”初始化“
例程1.1

#include<stdio.h>
int main(void)
{
    int *x;
    *x = 3;
    return 0;
}

这样的代码可能会出现段错误,因为x指针不知道会指向哪一块内存,使用*x=3来更改那块内存的数据有可能访问到非法内存导致段错误,当然也有可能因为没访问到非法内存而没有产生段错误,但是一个健壮的程序不允许存在这样的隐患。

例程1.2

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    int *x;
    x = (int *)malloc(sizeof(int));
    //上面一行代码相当于对指针的初始化,使得指针指向一个合法的内存区域
    *x = 3;    
    //上面这行代码的方式就不会有访问非法内存的可能,就不会产生段错误
    free(x);
    return 0;
}

2.变量名和指针
例程2.1

#include<stdio.h>
int  main(void)
{
    int x=1;
    int *px1, *px2;
    px1 = &x;
    px2 = &x;
    //上面这两行代码是的指针px1、px2指向同一块内存,也就是都指向int型整数x,也就是*px1、*px2、变量名x都是代表同一块内存的数据
    int y = x;
    //这行代码为y分配了一块内存,并将x的值复制到y的所在内存中,而不是x和y共享一块内存
    return 0;
}

 

指针、变量名、指针所指向的内存

标签:

原文地址:http://www.cnblogs.com/xumenger/p/4293427.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!