当前位置:首页 » 编程语言 » c语言指针赋值指针

c语言指针赋值指针

发布时间: 2022-04-26 17:33:42

c语言中能把指针变量赋值给指针变量嘛

指针变量赋值给指针变量
是可以的。
我想补充楼上的
1、就是这两个指针变量同时指向一个地方
内存
2、指向指针的指针的指针是二级指针。它指向指针。
到看你怎么用了

② c语言如何给结构体指针赋值

结构体数组指针作为函数参数,通过数组的首地址与偏移量对结构体数组进行scanf的赋值,在函数中通过指针间接访问到其指向的内存。

举例:编写函数,输入5个学号(int),5个姓名(字符串),5个成绩数组(每组三个成绩)(int[3]),依次调用函数

#include <stdio.h>

#include <stdlib.h>

struct student //建立结构体,学号,姓名,3门课的分数

{

int num;

char name[10];

int score[3];

}Stu[5]; //初始化,一共5个学生的数据

void getScore(struct student * p) //函数:向结构体读取分数,一共三门课

{

int i, j;

for (i = 0; i < 5; i++)

for (j = 0; j < 3; j++)

scanf_s("%d", (&(p+i)->score[j]));

}

void getNum(struct student * p) //函数:向结构体读取学号

{

int i;

for (i = 0; i < 5;i++)

scanf_s("%d", &(p + i)->num);

}

void getName(struct student * p) //函数:向结构体读取姓名

{

int i;

for (i = 0; i < 5; i++)

scanf("%s", &(p + i)->name);

}

int main()

{

int i, j, average[3] = { 0 }; //average数组储存每门课的平均分

getNum(Stu); //函数调用

getName(Stu);

getScore(Stu);

for (j = 0; j < 3; j++)

{

for (i = 0; i < 5; i++)

average[j] += Stu[i].score[j];

}

for (i = 0; i < 5; i++)

{

printf("num = %d name = %s Score:", Stu[i].num, Stu[i].name); //依次打印学号 姓名

//printf("%d %d %d", Stu[0].score[0],Stu[0].score[1],Stu[0].score[2]);

for (j = 0; j < 3; j++) //打印三门课的分数

printf(" %d", Stu[i].score[j]);

printf(" ");

}

printf("average:");

for (i = 0; i < 3; i++)

printf("%f ", (float)average[i]/5); //打印三门课平均分

printf(" ");

system("pause");

return 0;

}

如:

scanf("%c%c%c",&a,&b,&c);

输入为:

d e f

则把'd'赋予a, ' '(空格)赋予b,'e'赋予c。因为%c 只要求读入一个字符,后面不需要用空格作为两个字符的间隔,因此把' '作为下一个字符送给b。

只有当输入为:def(字符间无空格) 时,才能把'd'赋于a,'e'赋予b,'f'赋予c。

③ c语言指针赋值问题

请分清“指针本身的值”和“指针指向的地址中的值”这两者的区别。指针本身的值就是地址。

inta=2;
int*p=&a;
//p=100;//试图将指针本身的值修改为100,即令指针p指向内存地址100的位置,这是未定义行为
*p=100;//将指针p指向的地址中的值修改为100,即将a的值修改为100

④ C语言程序设计 指针变量赋值

C语言 形式逻辑不成立(C语言的缺点!)。

int a[ 10] ,*p=a; 是声明,声明中 *p=a 表示p是指针,初始化把a数组的首地址赋给它。

*p=a;是语句,不是声明,形式一样,就不行了!
因为 语句 里,*p 表示p 指向的 值。

同样的形式,意思不同,形式逻辑不成立,(C语言的缺点!)。
初学者,人人遇到这个问题!

⑤ C语言指针赋值

类型不匹配,这个时候a相当于指针的指针,这样写当然不正确了,你要是想取这个地址,可以写成

p = *(a+1);

⑥ 在C语言中能否直接给指针指向的数据赋值为什么

可以,但int *p;*p=7;这样不行。

因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。

这样才可以:

int a,*p=&a;*p=7;

实际上就是使a等于了7。

(6)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
a;表示编译器随机取出一个空闲的地址分配给a,不妨设为00000000,长度为sizeof(int),不同编译器可能不同。int
*p;也表示随机取出一个空闲的地址分配给p,不妨设为000000f0,长度一般为4个字节,则这四个字节现在存储的内容是不确定的,假设为00000ff0,那么*p表示地址00000ff0上的值。*p=a则把地址00000ff0的值变为a的值,显然如果该地址目前正在被某个进程使用,就有可能破坏该进程,因此这种方法是十分危险的。给指针赋值一般有两种方法,一种是将已经存在的变量的地址传递给指针,格式为:p=&a;另一种是首先为指针申请指向的合法内存,C语言中用函数malloc(),然后给已申请的地址赋值,如*p=6。

⑧ C语言程序设计指针变量赋值

int
*p;中的“*”说明定义的一个变量p是指针类型的。

*p中的“*”是一种操作,是取值操作。即去指针指向的那个值。
*p可看作是一个整形的变量。a则可以看成是一个指针。

⑨ C语言指针的赋值问题

指针在用要注意初始化,例如:

int *p;

p为指针,地址是未知的,如果直接赋值

*p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。

可以int *p=&a;

或者int *p;

p=&a;

然后再对p进行操作

有错。

注意大小写,还有

int a=9;

int *p;

p=&a;//这个是指针指向a

*p=8;

这样就对了。

(9)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

备注:字符串与指针的初始化和赋值

初始化:

char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的首地址,而并非传递字符串的值。由于,在C语言里面,没有总体处理一个字符串的机制

赋值:

cp = "abcdefg";

*cp=”abcdefg” ;//错误!字符串常量传递的是它的首地址,不能够通过*cp改动该字符串的值,由于该字符串为常量,而它仅仅是简单的将指针指向该字符串常量。

⑩ C语言指针怎么赋值呢

要改p–>a的值,和在这个函数里面是一样的
直接
p–>a=要赋值的值
这样就可以了
唯一需要注意的就是要赋值的是结构体指针还是结构体变量,如果不是指针那就要改成点了
p.a这样

热点内容
汽车小组件怎么弄到安卓桌面 发布:2025-05-16 13:51:12 浏览:218
linuxg编译器下载 发布:2025-05-16 13:50:58 浏览:775
centosc编译器 发布:2025-05-16 13:50:17 浏览:947
安卓手机如何变换桌面 发布:2025-05-16 13:39:33 浏览:514
sql存储过程命令 发布:2025-05-16 13:17:54 浏览:145
用纸做解压小玩具西瓜 发布:2025-05-16 13:04:09 浏览:935
局域网xp无法访问win7 发布:2025-05-16 13:03:58 浏览:942
油卡如何修改密码 发布:2025-05-16 13:00:35 浏览:901
安卓手机如何拼照片 发布:2025-05-16 12:58:23 浏览:374
深入浅出python 发布:2025-05-16 12:56:52 浏览:655