今天给各位分享c语言指针不能的知识,其中也会对c语言指针不能赋值解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、C语言中关于结构体指针为什么不能在函数内赋初值的问题?
- 2、在c语言中在定义一个指针变量时不能对其进行初始化
- 3、C语言中指针:不能通过改变指针形参的值而使指针实参的值改变,如下例...
- 4、C语言中不能对什么类型指针进行取值操作
C语言中关于结构体指针为什么不能在函数内赋初值的问题?
在c语言中定义指针变量时是可以进行初始化的。指针变量的初始化可以在定义时或定义后进行,也可以在数组或结构体中作为元素进行初始化。
指针变量 里面是地址, int 变量里面是整数。整数和地址是2个不同的东西。地址是一种标识,而这种标识和整数没有关系。赋值一般发生在同一类型的变量之间,或者可以强制转换的变量类型之间。地址不能强制转换到整型。
要么就直接定义全局变量,要么就预定义,但是像你那样再赋值是不行的。全局变量 int N=10;预定义:define N 10 区别是,全局变量在函数中是可变更的,而预定义中的变量是静态的,不能变更。
因为数组名就是数组第一个元素的指针常量,是一个常量左值。可以赋值的必须是非常量左值,常量左值和右值是不可以被赋值的。 以上是我个人的理解,有疑问继续追问。
input(struct student stu)改为 input(struct student stu[])传入的是结构体数组指针。
在c语言中在定义一个指针变量时不能对其进行初始化
1、使用指针前必须声明,但没有说必须定义;既然不是定义,就不一定要初始化。只是没有初始化的指针不能做右值使用而已。此题中的第一选项是错误的,因为指针p是野指针(即指针没有指向),却要给它的指向*p赋值x。
2、所以,对于A答案,float *p = ***,既然p是一个指针,那么给它初始化***是不对的,它需要的是一个地址值。如果是 float *p; *p = ***的就靠谱了,因为后一个p的前面的*表示的是取指针指向的值。
3、在c语言中,变量的使用规则是为了保证数据的可靠性,变量使用时必须初始化,否则会产生意想不到的严重后果!在这里说明一下:指针变量也其他变量一样存贮数据,只不过指针变量所存贮的数据比较特殊,是一个其他变量的地址。
C语言中指针:不能通过改变指针形参的值而使指针实参的值改变,如下例...
不可以。为什么不可以,你是企图通过改变指针形参的值而使指针实参的值也改变。函数调用结束后,pp2变量所占存储空间被释放。
定义数组并赋值时C语言规定下标是这样的,a[n]中的n个元素应该是a[0]...a[n-1]。
要改变实参, 只能通过改变形参指向的空间。也就是说 要满足两个条件, 1 形参是指针类型 2 改变的是形参指向,即*p而不是p本身。否则, 是无法改变实参的。
本质上说,C语言的参数传递都是传值的,所以实参都不会改变。有一种情况可以理解成实参的改变:如果形参接收的是指针,而实参传递的是地址,在函数内部对该地址中的内容进行了改变,看起来就是修改了实参的值。
C语言中不能对什么类型指针进行取值操作
void*的,代表通用指针,必须强制类型转换后才能取值。
首先更正一下楼主错误,int 型的指针不可以用来获取char型的地址的,这样会产生错误,如果你的编译系统没有报错,实际上也有错误。第二,字符串实际上就是等于字符数组。
不能对指针作++运算,这种指针表示,指针的地址不能被改变,可以改变指针地址中的值。因此不能做++运算。
能,一定能。但你int *p;*p=7;这样不行。为什么呢?因为“能直接给指针指向的数据”赋值,而你这里的p还没有指向,所以不能赋值;这种指针有个名字叫“悬浮指针”,俗称野指针,是不能给它赋值的。
只有void类型的指针式是可以指向任意类型的数据的。
会自动做强制转换,也就问是向下取整。当如果是 q=p 那就不行了。不同类型指针不可以直接赋值。如果一定要答赋值 可以q=(int )p;做显式的强制转换。回 但是由于int和float的存储结果不同,得到答的值也是错的。
关于c语言指针不能和c语言指针不能赋值的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。