c语言如何给指针赋值(c语言结构体函数指针怎么赋值)

:暂无数据 2026-04-11 10:40:02 0
关于c语言如何给指针赋值,有一个概念至关重要,那就是c语言结构体函数指针怎么赋值。它为何如此重要?且听我们慢慢道来。

本文目录

c语言结构体函数指针怎么赋值

指针就是指向内存的某个地址的一个变量。
结构体指针就是这个指针变量的值必须指向存放该结构体的内存位置。
当这个指针没有任何指向时,可以赋值为null值,但是改指针不可使用,程序中应该做判断。下面是一些赋值演示。
struct student{
int id;
int score;
} aaa;
struct student *p = null;//结构体指针p初始化赋值为null
struct student *p2=&aaa//p2指向aaa
struct student *p3=(struct student *)malloc(sizeof(struct student));//内存中申请一个结构体空间,并将地址强制转换为结构体指针变量赋值给p3

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

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

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

#include 《stdio.h》

#include 《stdlib.h》

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

{

int num;

char name;

int score;

}Stu;          //初始化,一共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));

}

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 = { 0 };   //average数组储存每门课的平均分

getNum(Stu);            //函数调用

getName(Stu);

getScore(Stu);

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

{

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

average;

}

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

{

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

//printf("%d %d %d", Stu);

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

printf(" %d", Stu);

printf("\n");

}

printf("average:");

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

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

printf("\n");

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语言如何把指针指向的值赋值到变量上

要将指针指向的值赋值到变量上,
需要将指针指向的值取出,然后执行赋值操作。
对指针取值需要使用取值运算符*,这个符号和乘相同,但功能不同。用于取值时,*为单目运算,与后续的指针相结合,实现取指针指向的值的效果。
比如
int
a
=
10;
int
b;
int
*p
=
&a
这时p指向变量a的地址,指向的值为10,要将其赋值给b,需要
b
=
*p;

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

C语言 形式逻辑不成立(C语言的缺点!)。\x0d\x0a\x0d\x0aint a ,*p=a; 是声明,声明中 *p=a 表示p是指针,初始化把a数组的首地址赋给它。\x0d\x0a\x0d\x0a*p=a;是语句,不是声明,形式一样,就不行了!\x0d\x0a因为 语句 里,*p 表示p 指向的 值。\x0d\x0a\x0d\x0a同样的形式,意思不同,形式逻辑不成立,(C语言的缺点!)。\x0d\x0a初学者,人人遇到这个问题!

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

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

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

这样才可以:

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

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

扩展资料:

注意事项

也可以使用赋值运算符为指针变量赋值,但要保证两个指针变量的类型相同。

假设有如下变量定义:

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语言 指针如何赋值

1、变量的指针就是变量的地址。存放变量地址的变量是指针变量。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针。

2、为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”。

3、定义指针变量.对指针变量的定义包括三个内容:指针类型说明,即定义变量为一个指针变量和指针变量名的基本形式类型说明符*变量名。

4、int i,j;表示i,j是一个指针变量,它的值是某个整型变量的地址。或者说i,j指向一个整型变量。至于i、j究竟指向哪一个整型变量,应由向i,j赋予的地址来决定。

5、int *s是指向整型变量的指针变量,float *d是指向浮点变量的指针变量,char *g;是指向字符变量的指针变量。应该注意的是,一个指针变量只能指向同类型的变量,如s只能指向浮点变量,不能时而指向一个浮点变量,时而又指向一个字符变量。

6、指针变量的引用,指针变量同普通变量一样,使用之前不仅要定义说明,而且必须赋予具体的值。未经赋值的指针变量不能使用,否则将造成系统混乱,甚至死机。

关于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语言 如何给字符指针数组赋值

字符指针数组的赋值和普通数组的赋值是一样的,只不过字符指针数组里的元素是指针。
以下是字符指针数组赋值的示例:
char* pChar;
char str1 = "First";
char str2 = "Second";
char str3 = "Third";
char str4 = "Fourth";
char str5 = "Fifth";
pChar = str1;
pChar = str2;
pChar = str3;
pChar = str4;
pChar = str5;
for (int i=0;i《5;i++)
{
printf("pChar);
}

C语言指针赋值

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

这篇关于c语言如何给指针赋值c语言结构体函数指针怎么赋值的文章,也是我们与你的第一次(或又一次)思维碰撞。感谢相遇。
本文编辑:admin

更多文章:


后缀名为js的是什么文件(js 如何是什么文件)

后缀名为js的是什么文件(js 如何是什么文件)

还记得第一次接触后缀名为js的是什么文件时的茫然吗?是js 如何是什么文件这个概念,像一盏灯照亮了后续的路。本文将为你点亮这盏灯。

2026年4月11日 12:20

java菜鸟网(菜鸟学习Java需要提前做好哪些准备)

java菜鸟网(菜鸟学习Java需要提前做好哪些准备)

曾几何时,我也觉得java菜鸟网高不可攀,尤其菜鸟学习Java需要提前做好哪些准备更是一头雾水。后来才发现,只是没找对方法,希望我的经验能帮到你。

2026年4月11日 12:00

h5免费制作软件哪个好(h5用什么软件制作会比较省时省力呢)

h5免费制作软件哪个好(h5用什么软件制作会比较省时省力呢)

在了解h5免费制作软件哪个好的过程中,您是否也曾对h5用什么软件制作会比较省时省力呢感到困惑?别担心,接下来我将结合常见场景,带您一步步理清其中的关键点。

2026年4月11日 11:40

jquery设置select选中(jquery怎么设置select选中某项值)

jquery设置select选中(jquery怎么设置select选中某项值)

从我第一次听说jquery设置select选中到真正弄懂jquery怎么设置select选中某项值,也走过一些弯路。下面就把我的学习心得分享给大家,希望能让您的入门之路更顺畅。

2026年4月11日 11:20

docker菜鸟教程常用指令(如何在容器中运行docker命令)

docker菜鸟教程常用指令(如何在容器中运行docker命令)

有没有觉得docker菜鸟教程常用指令听起来很高深?别怕,今天我们就把它和如何在容器中运行docker命令一起,拆解成易懂的小知识点。

2026年4月11日 11:00

c语言如何给指针赋值(c语言结构体函数指针怎么赋值)

c语言如何给指针赋值(c语言结构体函数指针怎么赋值)

关于c语言如何给指针赋值,有一个概念至关重要,那就是c语言结构体函数指针怎么赋值。它为何如此重要?且听我们慢慢道来。

2026年4月11日 10:40

linux应用开发和软件开发(虚拟机只能装linux系统,如何进行软件开发)

linux应用开发和软件开发(虚拟机只能装linux系统,如何进行软件开发)

正如一位名家所言:“弄懂虚拟机只能装linux系统,如何进行软件开发,是通往linux应用开发和软件开发殿堂的捷径。” 今天,我们就来走一走这条捷径。

2026年4月11日 10:20

存储和镜像管理组件分别是(操作系统的内部是如何分工的)

存储和镜像管理组件分别是(操作系统的内部是如何分工的)

关注本号的朋友都知道,我们一直在持续输出关于存储和镜像管理组件分别是的干货。今天,我们就聚焦到大家反复问到的操作系统的内部是如何分工的上。

2026年4月11日 10:00

php制作编辑个人资料(用PHP制作个人博客)

php制作编辑个人资料(用PHP制作个人博客)

当我们讨论php制作编辑个人资料时,我们真正需要关注的是什么?很多高手的答案都指向了:用PHP制作个人博客。为什么?

2026年4月11日 09:40

创建联合索引的sql语句(sql server有联合主键是否也有联合索引,怎样创建联合索引)

创建联合索引的sql语句(sql server有联合主键是否也有联合索引,怎样创建联合索引)

您是否正在为搞不清创建联合索引的sql语句和sql server有联合主键是否也有联合索引,怎样创建联合索引的关系而烦恼?恭喜,这篇干货就是您的“及时雨”。

2026年4月11日 09:20

最近更新

jquery设置select选中(jquery怎么设置select选中某项值)
2026-04-11 11:20:02 浏览:0
热门文章

**art和**artly区别(**art是啥)
2026-03-30 23:20:01 浏览:0
api接口如何使用(api接口是什么)
2026-03-31 12:40:01 浏览:0
标签列表