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

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