
正文
c语言定义指针不赋值,c语言指针定义并赋初值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
在c语言中,指针变量赋值为零与不赋值有什么区别?
1、赋值为0或者NULL是个良好的习惯c语言定义指针不赋值,程序可以在使用指针之前通过判断此指针是否有效c语言定义指针不赋值,以免出现野指针的错误。
2、其实这种现象在C语言中是有定义的。值为0的整形常数表达式或强制转换为void *类型的表达式可通过强制类型转换、赋值或比较操作转换为任意类型的指针。其结果将产生一个空指针。
3、没有区别。C语言判断真假时,以0为假,非0为真,即1也是表示真。通常使用逻辑变量的做法:定义一个int类型变量,当变量值为0时表示false,值为1时表示true。
4、C语言编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”。 比如:a、b的值分别是0、4,则a||b的值为1,a&&b的值为0。但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。
5、可以。只有0有这个特权,无论什么类型的非常指针,在任何时候都可以直接赋0值来表示这个指针不可用。
相关问答
Q1: C语言将结构体指针作为参数传递不能对其赋值
可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。
是不能修改的。void fun(char a[]){} void main(){ char *p = 123;fun(p);} 数组作为函数参数的时候,是可以把指针变量赋值给它的,这时数组名就可以看作一般的指针变量了。简单的说就是这样。
指针变量 里面是地址, int 变量里面是整数。整数和地址是2个不同的东西。地址是一种标识,而这种标识和整数没有关系。赋值一般发生在同一类型的变量之间,或者可以强制转换的变量类型之间。地址不能强制转换到整型。
肯定能。但你编写的:int p;*p=7;这样的程序不对。因为“能直接给指针指向的数据”赋值,而你编写的小程序里的p还没有指向,所以不能赋值;这个指针叫“悬浮指针”,也叫野指针,它不能被赋值的。
凡是以括住的形式直接出现,而且你又没有为其分配内存空间的字符串都是常量字符串,是不能修改其值的。这样:char a[6]=hello;a[2]=c;就可以了。这里你为hello分配了一个长度为6的字符数组空间来存放。
Q2: 【C语言,为什么类型不同的指针不能被赋值】
1、对于指针变量本身c语言定义指针不赋值,所需c语言定义指针不赋值的存储空间不管是什么类型c语言定义指针不赋值的,都是一致c语言定义指针不赋值的,区别在于它指向的变量的类型,不同的编译系统对类型所需空间的大小也是不一样的。例如有的int就是2个字节,而有的就是4个字节。
2、意味着c语言定义指针不赋值你要把一个指向整形的指针赋值给一个指向字符型指针,类型不匹配,这是 不允许的。
3、上边的程序,在编译时会出现指类不兼容的警告,但是程序可以运行,结果是65535,这是printf自身的原因。你要做的就是避免因为指类不同而引起的段错误(非法内存访问)。
4、float赋值给int,会自动做强制转换,也就问是向下取整。当如果是 q=p 那就不行了。不同类型指针不可以直接赋值。如果一定要答赋值 可以q=(int )p;做显式的强制转换。
Q3: C语言中关于结构体指针为什么不能在函数内赋初值的问题?
1、你这句有问题c语言定义指针不赋值,比如这个c[i].one,这个相当于一个变量,你可以给它赋值,而&c[i].one是变量的地址,你怎么能修改地址呢。
2、在c语言中定义指针变量时是可以进行初始化的。指针变量的初始化可以在定义时或定义后进行,也可以在数组或结构体中作为元素进行初始化。
3、有几个原因可能导致在定义变量时不赋初值c语言定义指针不赋值: **性能考虑:** 在一些情况下,显式初始化变量可能导致额外的开销,尤其是对于大型数据结构或在性能敏感的代码段中。
4、因为你下面j第一次引用的语句是dp[j]=dp[0]。而在这之前对j赋值的语句是写在for循环的if里,如果if不成立,那么j就没有赋值,没有赋值,如果j又没初值,那么就是随机值,那么dp[j] 就可能访问越界。
5、是你对字符数组的使用没有掌握。xiao.name[i]是一个char类型的数组元素,不能将一个字符串常量的首地址赋值给它。要将字符串保存到字符中,应该使用strcpy函数。
关于c语言定义指针不赋值和c语言指针定义并赋初值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






