c语言中定义指针变量时,赋值和赋初值有什么区别?

如题所述

赋初值,也就是初始化,只能在定义的时候操作,形式为
type var_name = init_value;
其中=init_value就是赋初值了。

赋值,是在定义后,改变变量的值,形式为
var_name = value;

二者的效果是类似的,都是把变量值改变。但在C语言中,编译出的代码有所区别。其中赋初值的效率会更高。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-02-17
没什么区别,就是在开始时给了一个值!就像int i;i=1;和int i=1;是一样的!!本回答被提问者采纳
第2个回答  2015-02-17
char *p="111";和char *p;定义是一样的,
char p[]="111";和char *p="111";是不一样的。
char *p;只是声明一个指针,
char p[];是声明一个数组,相当于const char *p;追问

"111"是不是字符串?

追答

"111"是声明字符串,并且还指这个字符串的首指针

追问

恩,谢谢

追答

。。。

追问

数组名作为实参,数组元素地址作为实参,通过地址来引用二维数组元素,通过建立指针数组来引用二维数组元素。这些东西到底是什么东西啊,好混乱啊,怎么理解啊

追答

比如你的main函数里定义了一个数组
int main(){
int a[20];
return 0;}
想在函数里引用的话
void fun(int *p)//也可以写成fun(int p[])
{
p[0]=0;p[1]=1;
return;
}
想调用的话,就
fun(a);就行了

追问

诶,不懂

不是多此一举吗?

追答

在复杂程序里不这样会晕

第3个回答  2017-01-14
指针变量 合法的赋值 只有地址值。
如果填两个的话
就是地址值和空值 也就是NULL

很多人说地址值和变量值, 后者 是不对的。

c语言中定义指针变量时,赋值和赋初值有什么区别?
二者的效果是类似的,都是把变量值改变。但在C语言中,编译出的代码有所区别。其中赋初值的效率会更高。

C语言指针变量的赋值和做函数的参数
1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:int x ;int * px=&x ; \/\/定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int *类型变量! 实际上的赋值语句是px=&x ;int * py ;py=&x ; \/\/单独赋值,将py指向x*py=10 ; \/\/这里的*,是引用指针中的数...

关于c语言指针的声明与赋值
综上所述,指针的声明与赋值在C语言中是两个基本操作,它们在实际应用中有不同的场景和需求。通过理解上述两种写法的区别,程序员可以更灵活地应用指针,以满足不同的编程需求。灵活运用指针的声明与赋值,对于编写高效、易于维护的代码至关重要。

C语言指针变量为什么要赋初值?
1、给指针变量赋初值在语法上是没有错误的,编译执行也可以通过,但是一旦代码量增多后,很容易造成指针的错用,为了防止这一问题最好将指针变量定义的时候就置成NULL,这样做是为了代码安全着想。2、指针定义后就会随机指向一个位置的,编译的时候也不会提示错误,程序短很容易找出来,长了多了就难找了...

C语言中用const声明全局变量赋初值和不赋初值有何区别?变量存放位置...
const 定义的常量 是赋初值的 不赋初值 就没法给值了 因为const 常量 放在系统常量区 那里的内存是只读的 除非强制转换为非const类型 否者无法修改其内容

C语言指针问题:在定义指针时*p=a和p=a有区别吗?
当然有区别,区别很大,*p=a,就是给指针的表示的地址赋值,也就是赋值给指针指向的存储单元;而p=a,则表示给指针赋值,也就是指针的地址变成了a。两者一个指明了具体值大小,一个指明了具体位置。

c语言赋值是什么?
C语言中的结构体变量可以用另一个变量对其进行赋值或初始化。简单结构体(不包含指针成员)直接赋值没有问题。但是稍微复杂一点的结构体里面会有指针成员,那么以上的浅拷贝则会有问题。赋值会直接将结构体的指针变量被赋值,赋值之前其所指向的内存单元丢失,赋值之后若该指针指向的内存单元被其它指针释放掉...

c语言指针的赋值问题
指针的基本概念 在C语言中,指针是一个变量,其特殊之处在于它存储的是其他变量的地址,而不是值本身。指针使我们能够间接地访问和修改变量的值。指针的赋值过程 当我们为指针变量赋值时,实际上是将其指向一个变量的内存地址赋给它。这个过程分为两步:首先确定变量的地址,然后将这个地址赋给指针变量...

c语言在对指针*P在进行赋值时,什么时候用变量名赋值,什么时候用变量的地...
C\/C++编译器不负责边界越界检查,这个工作由程序员负责,换句话说,编译器无法根据一个指针判断指向的内存是单个变量还是数组。以上是指针赋值的要求,其实很简单,类型一致就可以赋值。取地址部分 对于单个变量,需要取地址时,必须用&显式地告诉编译器,否则编译器隐式转换按取值处理,即默认取值。对于数组...

在c语言中给一个变量赋值与赋地址的区别
并且只有指针变量才能赋地址值。给变量赋地址这个变量要为指针变量int*p,b;*p=&b;给变量赋值只要类型相同就行。其实都是一样,都是给一个数据,地址也是一个数值而已给变量赋值是复制一个数如:inta=1b;b=a;则变量b被赋值为a的值,但是赋地址得用指针,因为指针的定义就是地址的意思。

相似回答