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

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;
}
时间: 2024-10-27 13:15:39

指针、变量名、指针所指向的内存的相关文章

指针的含义——指针变量、指针的指针、指针使用的注意

指针其实很容易理解的,其他并不是大家想象的那么神奇,那么难. 一.指针的含义:指针其实就是一个变量,它所存放的不是数据,而是数据在内存中地址.当然指针也可以存放函数(方法)的地址,后面会讲到的.声明指针的关键符是*号,指向地址的关键符是&. 二.指针变量: 例如1:#include <stdio.h> int main {  int a =10;   //第一一个变量a,赋值为10 int *p = &a;   //p就是一个指针变量,所指向的就是变量a的地址 printf(&

辨析函数指针变量和指针型函数

在上一篇随笔(顺序表基本操作算法的代码实现)中,LocateElem()函数的第三个形参的形式是: Status (*compare)(Elemtype e,Elemtype temp); 这是一个函数指针变量,借此机会记录一下函数指针变量和指针型函数的区别. 一.写法上的区别 函数指针变量 指针型函数 int (*function)(int i); int  *function(int i){} 上面是一个例子,可看到函数指针变量只是在:*function处比指针型函数多了一对小括号,下面是两

Android For JNI(三)——C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值

Android For JNI(三)--C的指针,指针变量,指针常见错误,值传递,引用传递,返回多个值 C中比较难的这一块,大概就是指针了,所以大家还是多翻阅一下资料,当然,如果只是想了解一下,看本篇也就够了,不过我也尽量陈述的很详细 一.指针 要说指针,其实通俗易懂的话来说,他应该是保存内存地址的一个变量,我们来看一下小例子 #include <stdio.h> #include <stdlib.h> main(){ //int 变量 int i ; i = 5; //打印i的值

c语言学习之基础知识点介绍(十):内存空间模型、地址解释及指针变量

一.内存 /* 内存: 存在内存里的. 内存分了N多个小空间,每个小空间1个字节 每个小空间有它自己的地址.每个地址之间差1 int类型占用4个字节,等于占了4个空间(有4个地址),不需要记住4个地址,而记住首地址就行了(因为首地址相当于入口或者生活中的门) 指针: 指针就是地址,地址就是指针. 地址:内存的地址 内存中的地址: 其实也是从1开始编号,然后一直自增 1M内存,1024个地址 0x7fff5fbff7cc:这叫16进制 十进制:逢10进1 有:0 1 2 3 4 5 6 7 8 9

学习指针变量占用内存字节数相关心得

在学习设置数据收发缓冲区时,做以下实验 void main () { LPBYTE m_data=new BYTE[16]; memcpy(m_data,"example",sizeof(m_data)); string str=" "; str[0]=m_data[3]; cout<<str<<endl; } 函数memcpy(m_data,"example",sizeof(m_data));将“example”在内存中

指向结构体变量的指针变量

指向结构体变量的指针变量的定义形式与一般指针变量的定义形式相同,只是将其指向类型定义为结构体类型即可.例如: struct person { char name[20]; char sex; int age; float height; }; struct person *p; 则指针变量p,它可以指向struct person类型的结构体变量. 将一个指针变量指向一个结构体变量后,可以利用指向该结构体的的指针变量引用成员,如: (* 指针变量名).成员名 如(*p).age; 以上形式也常写成

黑马程序员---C基础9【字符串的输入输出】【字符串相关函数】【指针】【指针变量初始】【二级指针】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [字符串的输入输出] 1.字符串输出: %s-------从给定的地址开始输出字符直到遇到\0停止: printf("%s\n",&a[3]);  printf("%s\n",a); char a[]="hellowo\0rd!"; 2.字符串输入: 从键盘上接收一个字符串,保存在以a为首地址的字符数组中 scanf("%s&

指针与指针变量

一.指针与指针地址 1. 地址 计算机的内存被划分成一个个存储单元,这些存储单元按一定的规则编号,这个编号就是存储单元的地址.每个存储单元大小为一个字节,每个单元的地址是唯一的. 2. 变量的地址 在程序中所有的变量都要分配相应的存储单元,不同数据类型所需要的存储空间的大小不同.系统分配给变量的内存空间的起始单元单元地址称为该变量的地址. 例如: int a; 假设分配给a的4个存储单元编号为0x300.0x301.0x302.0x303,如图,则0x303称为变量a的地址. 3. 指针 变量在

&lt;22&gt;【掌握】指针变量概念及定义方法+【理解】两变量值交换的方法+【掌握】总结*使用场合

[掌握]指针变量概念及定义方法 1.指针变量 用来存放地址的变量,就是指针变量 2.指针? 就是地址,地址是个常量 3.指针变量的定义 数据类型 *指针变量名; int *p; //定义了一个指针变量,变量名是p //int表示,p只能存放一个int类型的变量的地址 char *p1; //定义了一个指针变量,变量名是p1 //p1只能存放一个char类型数变量的地址 int num=10; char *p = &num; //警告 4.指针变量定义的注意事项 1)“*” 必须得有,如果没有就相

[日常] C语言中指针变量

CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址.编译和链接过程的一项重要任务就是找到这些名称所对应的地址. #include <stdio.h> //指针变量测试 //指针变量存储的值是另一个变量的地址,也就是说改指针变量指向了另一个变量 int main(){ int a=10; int c=20; //1.打印出变量的内存地址 printf("%#X \n",(unsig