有两种复制方式看你程序需要選择其中一种。
首先req不是一个指针,那么要访问那个i变量应该用a.i
a.i是一个指针它指向一个b的结构体类型,b里面有一个指针变量j
所以(a.i)->j是一個指向char的指针它可以放地址
优先级我没有查所以a.i加了一个括号。
有一个结构体:
从上面看sqlchar的data是char类型怎么赋值哦可是下面的代码可以给他赋值,和奇怪啊:
从上面看就是不一个字符串String,赋值给了一个char类型怎么赋值的成员变量啊!!
那位高手帮帮忙解释一下啊!!
有两种复制方式看你程序需要選择其中一种。
首先req不是一个指针,那么要访问那个i变量应该用a.i
a.i是一个指针它指向一个b的结构体类型,b里面有一个指针变量j
所以(a.i)->j是一個指向char的指针它可以放地址
优先级我没有查所以a.i加了一个括号。
上边的表达式为什么可以而把p換成数组,然后再赋值就不行了
字符串常量”hello”出现在一个表达式中时表达式使用的值就是这些字符所存储的地址,而不是这些字符本身
所以,可以把字符串赋值给指向字符的指针p而不能把字符串赋值给一个字符数组。
然后a = “hello”就不行了 “hello”赋值的值是一个地址而a雖然也有地址,但是这与指针是不一样的指针的值是地址,而数组的值不是地址
看到这样的错误提示,你是否会想到把char a[10]改成char a[6]呢
这就和仩边的分析同样的道理了右边的是一个地址,而左边的是一个值
在使用指针的时候指针可以自增,而数组不能自增
是因为a是个常量吔就是说在声明一个指针时,编译器只给指针本身保留内存空间而没有为指针分配内存空间。而数组就不同了编译器给数组分配了空間,数组a的地址就是一个常量了让常量自增这肯定是不行的
在指针自增的时候,编译器会自动识别类型比如指针是指向int型的,想获取丅一个的地址时指针直接p++就行了,不要多此一举的p+4了
特别需要注意的是在void指针使用的时候,不能使用指针运算应为void型编译器不能识別类型的长度(即指针所指对象的体积),p++这样就是不合法的即不能进行数学运算,也不能使用*取值操作想使用必须转换为其它的类型