当前位置:首页 » 编程语言 » 初始化指针变量C语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

初始化指针变量C语言

发布时间: 2022-11-04 09:14:14

‘壹’ c语言 指针变量的初始化问题

变量的初始化就是在定义变量的时候,直接对变量进行赋值操作。初始化的方式一般有如下两种:1、直接对变量进行赋予常量数值进行初始化;2、通过同类型变量进行初始化。举例说明如下://
以下属于第1种初始化方式int
a1=5;
//
整型变量的初始化int
b1[]={1,2,3,4};
//
整型数组的初始化char
str1[]="abcd";
//
字符数组的初始化//
以下属于第2种初始化方式int
a2
=
a1;
//
整型变量的初始化int
b2[4]
=
b1;
//
整型数组的初始化char
str2[4]
=
str1;//
字符数组的初始化char
*p
=
str1;
//
字符指针的初始化

‘贰’ C语言结构体指针变量初始化

void RegList(LB *L) //初始化线性表(建立头结点,指针域置为空)
{
L=(LB *)malloc(sizeof(LB));
L->next=NULL;

}
改成指针的指针 调用的时候RegList(&k);就行了。
void RegList(LB **L)
{
*L = (LB*)malloc(sizeof(LB));

(*L)->next = NULL;

}

‘叁’ c语言指针初始化

注意了,a只是一个双重指针,不是数组。还有new这个东西是C++中的。C中用malloc分配内存,再初始化。

‘肆’ C语言中指针变量的初始化有几种请分别举例并说明。

我觉得有三种吧。
a.赋值一个已有变量的地址
int a;
int *p=&a;

b.新开辟一块内存空间
int *p=(int*)malloc(size(int));

c.赋空值
int *p=NULL;

‘伍’ C语言 指向指针的指针变量的初始化

楼上的回答编译器是不允许通过的。程序员无权给指针直接赋常量值。
int a =2;
int * p = &a;
int **q = &p;//指向指针的指针变量初始化;
int * i,j,k =&a;
int *r[3] = { i,j,k};//指针数组初始化。

‘陆’ C语言结构体指针变量初始化

void
RegList(LB
*L)
//初始化线性表(建立头结点,指针域置为空)
{
L=(LB
*)malloc(sizeof(LB));
L->next=NULL;
}
改成指针的指针
调用的时候RegList(&k);就行了。
void
RegList(LB
**L)
{
*L
=
(LB*)malloc(sizeof(LB));
(*L)->next
=
NULL;
}

‘柒’ C语言的char指针初始化理解

char 指针,也就是char *类型。 其初始化本质上与其它变量初始化没有什么区别,就是赋予其一个初始化的值。
对于指针来说,在C语言中,就是一个地址。区分初始化情况,有四种表象:
1 初始化为空。即
char * str = NULL;
的形式,NULL在C语言中是特定的空指针,其值为0.在C语言中,以NULL作为指针的一个未生效状态,其本身是一个非法的地址值。

2 初始化为常量字符串地址。
char * str = "test";
常量字符串在运行时会被放在常量空间中,于是这样初始化后,地址是常量空间中的一个地址,对于该地址只能读取,不可写入。即str的值可以改,但是str指向的值是不可修改的。

3 初始化为变量地址。
这里的变量地址,包括全局变量,局部变量的地址,以及通过动态分配申请到的内存地址。
这种情况下,对指针指向的空间是可以修改的。

4 不做初始化。
这种情况在C语言中是允许的。如果为全局变量或静态局部变量,系统默认初始化为0值,即NULL。而对于局部变量,将是一个随机值。所以如果是局部变量不做初始化,在取其指向空间值前,必须为其指定一个合法的值,否则访问会出错。

‘捌’ c语言变量初始化的方式

全局变量的初始化 对于不同编译单位的全局变量,其初始化的顺序没有任何的保证,因此对不同编译单位里的全局变量,在它们的初始化顺序之间建立依赖性都是不明智的。 此外也没办法捕捉到全局变量初始化抛出的异常,一般来说要减少全局变量的使用,特别是限制那些要求复杂初始化的全局变量。
1,尽量不用全局变量
2,用静态变量,通过访问器进行访问 例如:全局变量
int a = 5;
int b = a;
如果a,和b定义在同一个文件里,那没什么问题,结果b等于5.
如果a和b定义在不同文件里,就不能保证b也等于5,也就是说不能保证a先初始化. 事实上,除了在同一个文件定义的全局对象的初始化是按照定义次序来进行的之外,其他全局或静态变量之间的初始化次序没有任何保障。解决这种问题的方法是不直接使用全局变量,而改用一个包装函数来访问,例如
int get_a()
{
static int a = 5;
return a;
}
int get_b()
{
static int b = get_a();
return b;
}

‘玖’ C语言:指针变量的初始化可以从键盘输入一个数,即int *ps; scanf("%d", ps);这句话为什么错

首先这句话是错的,原因是如题中的语句
scanf("%d", ps);表示的是从键盘输入一个整数,这个整数存放到ps所指向的内存空间,这里并不是要给ps本身进行初始化。
此语句之前如果ps没有初始化,那执行此语句程序可能会崩溃,所以指针使用前一定要记得先初始化。
如果想要靠输入给指针初始化,那对应语句应该是scanf("%d", &ps);不过这样做实际没啥意义,这样做也挺危险。如果后面用这个指针往里面写内容可能会程序崩溃,甚至你的系统会崩溃。

‘拾’ C语言指针的初始化!!!!

指针指向变量后才能操作,如:int *pt,a;pt=&a;*pt=5;第二个char *i;i="Hello";这样是正确的.