c语言定义结构体指针指针*在定义的时候和类型结合还是和变量结合?

定义一个指针变量最正确的写法是怎样的_百度知道
定义一个指针变量最正确的写法是怎样的
int *p;int*哪中是最正确的写法
我有更好的答案
对于写程序来说,后者容易让人误会。比如int* p,a,b,c;会让人以为p,a,b,c都是指针。其实只有p是指针,而a,b,c都是整型。int *p,a,b,c;就不会有这样的问题
采纳率:37%
两种都行吧。我一般用。int *p;
其他1条回答
为您推荐:
其他类似问题
您可能关注的内容
指针变量的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)指针(18)
用变量a给出下面的定义:
一个整型数;
一个指向整型数的指针;
一个指向指针的指针,它指向的指针是指向一个整型数;
一个有10个整型数的数组;
int a[10];
一个有10个指针的数组,该指针是指向一个整型数的;
int *a[10];
一个指向有10个整型数组的指针;
int (*a)[10];
一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
int (*a)(int);
一个指向数组的指针,该数组有10个指针,每个指针指向一个整型数;
int *(*a)[10];
一个有10个指针的数组,给指针指向一个函数,该函数有一个整型参数并返回一个整型数;
int (*a[10])(int);
一个指向函数的指针,该函数有一个整型参数并返回一个指向函数的指针,返回的函数指针指向有一个整型参数且返回一个整型数的函数;
int (*(*a)(int))(int);
下面的变量a都代表什么含义?
1)float(**a)[10];
(2) double*(*a)[10];
(3) double(*a[10])();
(4) int*((*a)[10]);
(5) long(*a)();
(6) int(*(*a)(int,int))(int);
(1)a是一个二级指针,该指针指向一个一级指针,这个一级指针指向一个有10个float型元素的数组。
(2) a是一个指针,该指针指向一个有10个指针元素的数组,每个指针元素指向一个double类型的数据。
(3)a是一个有10个元素的数组,每个元素都是一个函数指针,该函数指针指向一个没有参数且返回double的函数。
(4)a是一个指针,该指针指向一个有10个指针元素的数组,每个指针元素指向一个int类型的数据。
(5)a是一个指向函数的指针,该函数没有参数且返回long。
(6)a是一个指向函数的指针,该函数有两个整形参数并返回一个指向函数的指针,返回的函数指针指向有一个整型参数且返回一个整型数的函数。在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
假设主函数中有一个变量 a,然后在自定义函数中通过指针改变主函数的变量 a 的值,那么有一个小疑问:变量 a 的作用域只存在主函数,自定义函数运行时难道可以通过指针取得不在该函数作用域内的 a 变量的地址吗?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
自定义函数通过指针改变主函数的变量,指针是凭空变出来的么,需要从主函数里通过&a等方式把变量a以地址引用的方式传递给自定义函数, 这时候你控制的不是变量a,而是它对应的那个内存单元,变量名a只是这个内存单元的一个标记符号,而自定义函数获得的指针,是另一个标记
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
自定义函数运行时难道可以通过指针取得不在该函数作用域内的a变量的地址吗?
是的,你说的没错。不信可以把地址打出来看看:
Cvoid func(int *p){
printf("in func: %d", p);
int main(){
int a = 1;
printf("in main: %d", &a);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这是个拗口令式的逻辑.
a = 2; 变量a的作用域在 main 中, 实际上是告诉编译器:a 这个符号在 main 中特指某段内存上的值.
p = &a; 这里指针p也是一个变量, 作用域仍然在main中. 我们也能说 p这个符号的作用域在main中.
但是p的值, 也就是一个32位的地址, 实际上是一个32位的字面值好之前的2是一样的类型.
作用域是变量的概念. 我们可以说变量a 和 指针变量p 有作用域.
2 和 a的地址 是字面值, 没有作用域的概念.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
作用域指的是编译阶段变量的可见范围,并不表示内存的可访问性
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在主函数中把a的指针传给自定义函数的同时就是把a的地址传给了自定义函数。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
变量有作用域
自定义函数运行时难道可以通过指针取得不在该函数作用域内的 a 变量的地址吗?
给自定义函数传递“指针类型的参数”,就能解决了
void fun(int *p){
int main(){
int a = 1;
你只fun()函数里面修改*p(不要漏了*)的内容就相当于修改a的内容
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
int a = 9;
void fun()
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。C语言指针变量的定义
1.定义方法
类型标识符*变量标识符;
&&& 定义存放指定类型数据地址的指针变量。
&&& 类型标识符是定义指针的基类型,给出指针数据对应存储单元所存放的数据的类型,一般用“指向”这个词来说明这种关系,即类型标识符给出指针所指向的数据类型,可以是简单类型,也可以是复杂类型。用“*”表示定义的是指针变量,不是普通变量。变量标识符给出的是指针变量名。
(1)Int *p1,*p2,*p3;
定义指向整型数据的指针变量p1、p2、p3。
(2)float *q1,*q2,*q3;
定义指向实型数据的指针变量q1、q2、q3。
(3)char*r1,*r2,*r3;
定义指向字符型数据的指针变量r1、r2、r3。
(4)struct date
&&& {int year;
&&& int month;
&&& }*t1,& *t2,& *t3;
定义指向struct date类型数据的指针变量t1、t2、t3。
&&& 2.指针变量所指向的变量特定类型的数据
&&& 定义的指针变量用于存放指向类型数据的地址,我们可以通过指针运算“*”,引用指针变量所指向的数据。有关内容我们在指针运算中加以介绍。
&&& 例如,对指针变量p1、p2、p3,假定已有值,*p1、*p2、*p3代表指针变量p1、p2、p3所指向的数据,也就是p1、p2、p3的值对应的存储单元里存放的数据,称为指针变量所指向的变量,简称指针指向变量。
&&& 指针类型也是一种复杂类型,指针指向变量可以认为是指针数据的分量。指针指向变量相当于基类型变量。
&&& 如果指针变量p1、p2、p3分别存放整型变量i、j、k的地址,则p1指向i,p2指向j,p3指向k。
相关报道:
新闻热线:010-
责任编辑:
名企动态: |
标志着Windows迈出个性化计算的第一步……
本站特聘法律顾问:于国富律师
Copyright (C)
newhua.com

我要回帖

更多关于 c语言如何定义指针 的文章

 

随机推荐