设有定义:int x =0,*p;紧接着的赋值语句是:
A *p=NULL;
B p= NULL;
C p= x;
D *p =x;
答案 B
A int *p仅仅就是声明了p是一个指针 。 指针变量p没有初始化 ,属于野指针;百度这样说的 ;任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。如果没有初始化,编译器会报错“ ‘point’ may be uninitializedin the function ”。*p=NULL; *p指的是内容值,即变量的内容,因为p没有初始化,篡改了p原有的指向。
C 类型不对 p是指针变量 x是int类型的数据
D 和B 类似
分析指针和指针变量
1).指针的含义:
通过地址能找到所需的单元变量,地址形象化的称为指针。
指针式通过地址来体现的,地址指向所需的单元变量,即通过指针能够找到以它为地址的内存单位
(2).指针变量(地址变量):
一个变量专门存放另一个变量的地址(即指针)。指针变量的值是地址(即指针)
指针变量是基本数据类型派生出来的类型,不能脱离基本类型而
#include<stdio.h>
int main()
{
int a=100,b=10; //定义整型变量a,b,并初始化
int *pointer_1,*pointer_2; //定义指向整型数据的指针变量pointer_1,pointer_2,‘*’表示指向
pointer_1=&a; //把变量a的地址赋给指针变量pointer_1
pointer_2=&b; //把变量b的地址赋给指针变量pointer_2
printf("a=%d,b=%d\n",&a,&b);
printf("a=%d,b=%d\n",a,b); //输出变量a,b的值
printf("*pointer_1=%d;*pointer_2=%d\n",*pointer_1,*pointer_2);
//通过指针变量输出整形变量的值
return 0;
}
*pointer_1,*pointer_2 是内容值;
在dvc++运行结果;
pointer_1, pointer_2 是地址值;换句话p1,p2指向的是变量a,b所在内存单元的地址
2,字符指针在输出时候 出现乱码的情况以及解决方法;明确 *非定义功能 ---取值功能,在定义语句中就是单纯的表示指针
#include <iostream>
using namespace std;
int main(){
//double num=1024.23;
//声明一个指针指向num;
//double * ptr_num=#
char ch='a';
char *p=&ch;
cout<<"p的值:"<<(void*)p<<"\n"<<"*p的值:"<<*p<<endl;//输出乱码在此处可以强制转化成void类型
/*cout<< "ptr_num的值:"<< ptr_num<<"\t"<<num<<endl;//明确\t 一个table键的空格,\n换行,cout可以连续输出多个量
cout<<"*ptr_numd的:"<<*ptr_num<<"\t"<<&num<<endl;*/
getchar();
return 0;//函数返回值 也是结束的标志,
}