❶ 关于c语言 指针赋值问题
&是一元运算,取变量地址的操作,间接访问操作用运算符号*.&他返回操作数的内存地址,可以赋给类型合适的指针./ 列如int x int *px px=&x
将X的内存地址赋给指针变量px,该赋值语句表示 指针px制向变量X, *运算符与&运算符刚好相反,它也是一远运算符.用语返回指针指向的内存地址中存的值!
❷ C语言对指针赋值有多少种方法
不管是在什么样的系统下 ,都要区分 指针本身 和指针所指向数据的类型
如 定义 char *p; 则p指向的内容是 字符型的 但是绝不意味着p是字符型的 也就是 p不一定是1个字节 当然 int *p 也是如此;
你可以用sizeof 来查看
比如定义 type(如char int long...) *p ; 你用 sizeof(*p) sizeof(p)
如在 32bit系统中,无论前面的type是整形、实形……, sizeof(p)的值都一样都是4;在8bit系统中(如单片机系统) 应该是1或2(这个应该跟单片机的型号相关不同的单片机系统 应该也不一样)
这就是说 指针本身 是不区分类型的 它只是一个代号 用来指向不同的东西
就像 可能一个班级50人, 一个100人 不管班级的人数有多少,它都叫1班、2班 都是俩字
❸ c语言中指针赋值
vc有内存安全检查,如果你没有申请的内存空间是不能访问的,在这段程序中
char *a只是声明了一个char的指针,而且没有初始化,它指向的空间是一个不安全的内存空间,而 *a='c'是往这个未知空间里写入一个'c',vc安全检查到这里就会报错。
而tc没有安全检查所以可以运行。
❹ C语言指针赋值问题
没办法做到。因为a是一个指针,占用4个字节,而b是一个字符变量,占用一个字节。不能将指针的值赋给字符变量。
当然,如果你将b声明为一个字符数组,那么可以将"abc"放到字符数组中。
❺ C语言指针怎么赋值呢
要改p–>a的值,和在这个函数里面是一样的
直接
p–>a=要赋值的值
这样就可以了
唯一需要注意的就是要赋值的是结构体指针还是结构体变量,如果不是指针那就要改成点了
p.a这样
❻ C语言程序设计指针变量赋值
int
*p;中的“*”说明定义的一个变量p是指针类型的。
而
*p中的“*”是一种操作,是取值操作。即去指针指向的那个值。
*p可看作是一个整形的变量。a则可以看成是一个指针。
❼ 请问C语言这个指针要怎么赋值
都不知道你的程序要表达神马意思,是查找子串还是查找字符,还是比较字符。
子函数是比较字符串,主函数只输入字符,输出字符。
return source[i]; 错误, 这里是返回字符,但是函数要求返回指针。即 source+i,但是scource是const变量。所以用强转 return (char *)(source+i);
source=getchar(); /////////输入字符不能赋予指针。只能地址,要赋值就 *source=getchar();
chars=getchar(); ///同理
改成:
*source=getchar();
*chars=getchar(); 之后记得开辟空间,就算是字符也得要开辟一个。
后面不能再用find_ == NULL判断了,因为find_不会指向NULL的了
gets() 错误
///////////////////////////////////////
//////
///////////////////////////////////////
❽ 在C语言中能否直接给指针指向的数据赋值为什么
可以,但int *p;*p=7;这样不行。
因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。
这样才可以:
int a,*p=&a;*p=7;
实际上就是使a等于了7。
(8)c语言指针赋值扩展阅读:
注意事项
也可以使用赋值运算符为指针变量赋值,但要保证两个指针变量的类型相同。
假设有如下变量定义:
int i,j,*p,*q;p=&i;q=&j;
这两句将变量i和j的地址分别赋值给指针变量p和q;
执行了q=p后,执行该条语句,指针变量p和q都指向了同一个变量i,因此指针变量p和q中存放的都是变量i的地址&i。变量i此时并没有初始化,只为其分配了内存单元。
注意理解:q=p;和*q=*p
前者为指针变量q赋值,即将指针变量p中存放的某个变量的地址赋值给q。显然,赋值后,q和p就指向了同一个变量。
后者将p指向变量的赋值给q指向的变量。
例子:
p=&i;
q=&j;
i=2;
j=3;
❾ c语言 指针如何赋值
指针的赋值
int
*p;
int
a;
int
b[1];
p
=
&a;
p
=
b;
指针的赋值,“=”的左操作数可以是*p,也可以是p。
当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;
当“=”的左操作数是p时,改变的是p所指向的地址。
数组的变量名b表示该数组的首地址,因此p=b;也是正确的.
同类型的指针赋值:
int
val1
=
18,val2
=
19;
int
*p1,*p2;
p1
=
&val1;
p2
=
&val2;
p1
=
p2;
//注意啦,p1指向了val2,而没有指向val1
❿ C语言指针字符串赋值
在C语言中并没有字符串这个类型。所说的字符串就是字符数组。也就是char类型的数组。
与普通数组不同的,字符串必须以'\0'作为结束符。
而在C语言中,类型为T的一维数组,其首地址等效于该类型的一维指针,即T*型。
于是字符串,也就是字符数组,首地址就可以当做char *型使用了。
事实上,在库函数以及大多数使用到字符串作为参数的函数中,其参数都是char *型的。