指针初始化为NULL

#include<stdio.h>

#include<stdlib.h>

typedef struct {

int x,y;

}pt;

...

/*int main(){

//pt *pt_1=NULL, *pt_2=NULL, *pt_3=NULL;  此处执行后出现段错误

pt pt_1={},pt_2={},*pt_3=NULL;

....此处语句会操作pt_1,pt_2(或者操作pt*pt_1,pt*pt_2,若是用红色部分的写法);

return 0;

}*/

----------------------------------------------------------------------------------

int main(){

int p0=10,*p1=&p1;

int *p2=NULL;

printf("  ",*p1);

printf("  %d\n",(int)*p2);  //段错误

......

}

空地址并没有分配存储空间

时间: 2024-09-30 18:31:34

指针初始化为NULL的相关文章

指针初始化为NULL的作用

关于空指针NULL.野指针.通用指针,首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了. 假设 有语句 int a=10;那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000:那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10.现在定义:int *p:                 p=&a:当编译器遇到语句int *p时,它也会在内存中给指针变量p分配一个内存单元,假设这个

java基础 题和知识点总结, 关于String s是否默认初始化为null......,new一个对象和类静态域,是不是在内存中不是一个地方

一道笔试题 22. 下面代码的运行结果为:() import java.io.*; import java.util.*; public class foo{ public static void main (String[] args){ String s; System.out.println("s=" + s); } } A 代码得到编译,并输出“s=” B 代码得到编译,并输出“s=null” C 由于String s没有初始化,代码不能编译通过 D 代码得到编译,但捕获到 N

【ThinkingInJava】8、对象的初始化为null,基本类型默认初始化为0

/** * 书本:<Thinking In Java> * 功能:对象的初始化为null,基本类型默认初始化为0 * 1.在定义对象的地方. * 2.在类的构造器中 * 3.在使用这些对象之前,这个叫惰性初始化 * 4.使用实例初始化 * 文件:Bath.java * 时间:2014年10月12日15:21:17 * 作者:cutter_point */ package Lesson7ReusingClasses; import static net.mindview.util.Print.*

25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

package zhongqiuzuoye; public class Rect { public double width; public double height; Rect(double width,double height) //带有两个参数的构造方法,用于将width和height属性初化; { this.width=width; this.height=height; } Rect() //不带参数的构造方法,将矩形初始化为宽和高都为10. { width=10; height=

数组与字符串初始化为空的深入理解

正题 1. 一维数组初始化,可以只给一部分元素赋值,如下 int a[10] = {0,1,2,3,4}; 这样只给前面的5个元素赋值,后5个元素为0. 将char p[8]; 看作是字符数组的话, charp[8]={0}; 表示第一个元素为0,后面的7个元素也为0; 所以 char p[8] = {}和charp[8]={0}一样; 8个元素都初始化为0 2.用字符串常量来使字符数组初始化 char p[10] = "china"; 前5个元素为'c','h','i','n','a

为什么delete指针后指针设为null

int *p;/*........*/delete p; p=null; 看代码的过程中,有这么一个疑问.删除了指针p,指针p既是不存在,怎么还能设置指针p为null呢?为什么还要设置为null呢? 后来得知计算机上删除数据的方式:删除数据(视频,音乐,文件等),计算机并不会把存储数据的硬盘区域(或者是内存)的内容擦除消去,而是将内容标记为可覆盖,这时候我们就不能再访问到数据,而这些可覆盖据数据会留在原来的硬盘区域直到被新的数据逐渐覆盖.(所以,删除了数据之后,只要没有对硬盘进行过多的操作,还是

memset()初始化为1的那些事

问题代码: 1 #include <stdio.h> 2 #include <string.h> 3 int main() { 4 int array[5]; 5 int a; 6 while(~scanf("%d",&a)){ 7 memset(array,a,sizeof(array)); 8 printf("%d %d\n",array[0],array[1]); 9 } 10 return 0; 11 } 程序功能:初始化数组

如何将数组初始化为全0?

C语言中,声明数组的语句: int arr[100]; 这样声明得到的数组里面的存储的是随机的我们不知道的数据,对用户来说就是垃圾.有许多情况我们要将数组初始化为全零的情况才能进行其他操作. 最简单的方法就是用一个循环吧数组所有元素设置为0: int arr[100]; int i = 0; for(i = 0 ; i < 100 ; i++) arr[i] = 0; //This will make all ZERO 我们还可以利用其他几种方式做到初始化数组为0: 1.全局变量和静态变量初始化

全局变量初始化为0

#include<iostream> using namespace std; int a[5];//默认初始化为0 int main() { int b[5];//随机值 int c[5]={3};// c[0]=3,其他初始化0 return 0; } 全局变量初始化为0