c语言指针

c语言指针

平台用户的互动中精选与c语言指针相关的:1、c语言指针是什么意思! 2、关于C语言指针变量*p++ 、*(p++)、(*p)++的区别 3、c语言中,p为指针,那么*p和&p是一样的吗,什么区别 4、C语言指针,int a=1; int *p; 其中p=&a和*p=&a有什么区别?p的值是否相同? 5、C语言中“指针”和“指针变量”的区别是什么?? 6、为什么c语言指针那么难? 7、c语言指针输入 8、C语言指针什么时候要带*什么时候不带*? 9、C语言指针**p是什么意思 10、c语言中指针加不加*有什么区别
c语言指针
平台用户 2018-06-06 16:40:31

下面是精选平台用户互动时的最佳讨论

嚣张拔扈
嚣张拔扈


嚣张拔扈:c语言指针是什么意思!

白话一点。谢谢了!
下面的解答已被51人点赞
指针其实是一个整形变量,与其它数据不同的是,它的作用是用来存储其它变量的地址,比如说
int a;
int *p = &a;
这里面,a是普通的整形变量,p则是指针,用来存储变量a的地址,
这样做的话,就可以很容易的找到变量a所在的位置,从而得到a的值
最后一次编辑时间 推荐于2017-10-03 13:54:53
nika羽翊习习
nika羽翊习习


nika羽翊习习:关于C语言指针变量*p++ 、*(p++)、(*p)++的区别

int a=2,*p=&a,*q=&a; printf("%d %d\n",*p++,*(q++)); p=&a;q=&a; printf("%d %d\n",*p,(*q)++); 在教学视频上面看到这个 说答案是 2 2 3 2 但怎么都不明白怎么算的 刚刚学到指针 还不是很理解 麻烦高手说一下计算过程 怎么算出这个结果的 ... int a=2,*p=&a,*q=&a;
printf("%d %d\n",*p++,*(q++));
p=&a;q=&a;
printf("%d %d\n",*p,(*q)++);

在教学视频上面看到这个
说答案是
2 2
3 2
但怎么都不明白怎么算的
刚刚学到指针
还不是很理解
麻烦高手说一下计算过程
怎么算出这个结果的
叩谢~
下面的解答已被6344人点赞
1. printf中表达式的计算是右结合的,即从右向左运算;但输出还是从左向右
2. 第一个printf,先取q所是单元的值显示,即为2,再对q++,即q所指单元地址后移一个单元,这里无意义;然后再对p指单元后自增,先输出2。“*”运算符的优先级高于“++”运算符。
3. 第二个printf,都是对p和q所指单元的值进行操作,(*q)++先输出a的值2,再将其值加1变为3;再将p所指单元的内容a的值输出3
最后一次编辑时间 推荐于2017-11-25 11:54:12
99989918
99989918


99989918:c语言中,p为指针,那么*p和&p是一样的吗,什么区别

下面的解答已被9188人点赞

上面是我自己做的原理图,深入到内存中,你就懂了.不懂随时call

追问

在网上复制的一个c语言程序怎么粘贴到tc2.0中

追答

新建一个.c的文件啊,然后再读取

追问

是先粘贴到记事本,保存为.c   用tc打开他吗
可以放在桌面吗?
冒昧的问一句,阁下从事的工作与c编程有关吗

追答

恩,是保存为.c然后读取.
大学学过C,有点基础.不是编程工作

更多追问

最后一次编辑时间 推荐于2017-12-16 08:14:51
mylove2693
mylove2693


mylove2693:C语言指针,int a=1; int *p; 其中p=&a和*p=&a有什么区别?p的值是否相同?

下面的解答已被1497人点赞
指针本质就是存储内存地址的一个变量。所以指针可以指向某个变量在内存中存储的单元格嘛。变量去访问单元格最后也是编译器通过变量名和地址一一对应去查找的。而指针里面直接存储的就是地址,所以直接可以访问地址所对应的单元格。

不知道楼主说的是说明情况。所以几种可能的都说一下:

测试代码
#include "stdio.h"
#include "conio.h"

main()
{
int a=1;
int *p=&a;
int *q,*r;
q=&a;
*r=&a;
printf("p=%d,q=%d,r=%d",p,q,r);
getch();
}

int *p=&a ; 这是很标准的,把a的地址个p指针变量。
int *q;q=&a;这也是很标准的。定义一个指针变量,然后将a的地址赋值给她。
int *r; *r=&a; 首先r是个指针变量,但是r指向内存中那个单元格呢?r没有赋初值就开始用了。这是很严重的。r是个游离态的指针。 *r表示取出r对应的那个地址中的值。r都没有指向一个具体的单元格,如何去取值啊。
最后一次编辑时间 推荐于2017-11-25 01:39:14
殇宗康
殇宗康


殇宗康:C语言中“指针”和“指针变量”的区别是什么??

下面的解答已被6990人点赞
比较严格的说法是这样的:
系统为每一个内存单元分配一个地址值,C/C++把这个地址值称为“指针”。如有int i=5;,存放变量i的内存单元的编号(地址)&i被称为指针。
“指针变量”则是存放前述“地址值”的变量,也可以表述为,“指针变量”是存放变量所占内存空间“首地址”的变量(因为一个变量通常要占用连续的多个字节空间)。比如在int i=5;后有一句int *p=&i;,就把i的指针&i赋给了int *型指针变量p,也就是说p中存入着&i。所以说指针变量是存放指针的变量。
有一个事实值得注意,那就是有不少资料和教科书并没有如上区分,而是认为“指针是指针变量的简称”,如对int *p=&i;的解释是:声明一个int *型指针p,并用变量i的地址初始化;而严格说应该是声明一个int *型指针变量p才对。所以有时看书要根据上下文理解实质,而不能过于拘泥于文字表述。
最后一次编辑时间 推荐于2017-09-19 11:33:36
匿名
匿名


匿名:为什么c语言指针那么难?

下面的解答已被5715人点赞
指针确实难于理解。指针具有两个身份:

第一,指针本身是一个变量。只要是是变量,它就占用内存地址。当然如果没有分配内存地址,不在其内。

第二,指针包含一定的一个内容。指针所特殊的就是,他的内容保存的是其他变量的地址。

以上两点可以通过书中的示例7-7有比较好的体现。

例如,定义指针变量intp1。 intp1=&a 就表示 intp1保存的信息为a的地址。
而*intp1表示是intp1所保存地址的内存单元所保存的值,实际就是a的值。

所以,你给出的 *intp1=&a; 是一种不太合适写法。我们可以这样假设,再给一个变量b。令*intp1=b=&a,则
b=&a,说明b保存的a的地址,这样b就是一个指针。那*intp1=b,则说明 intp1所保存的地址指向的内存单元为b。所以,intp1可以看成a的指针的指针。

上面这个例子比较绕,慢慢想想,就理解了。
最后一次编辑时间 推荐于2018-03-08 12:00:53
吾乃无比牛X
吾乃无比牛X


吾乃无比牛X:c语言指针输入

vc6.0 #include<stdio.h> int main() { char *str; str="l love china"; puts(str); return 0; } 运行成功 而 int main() { char *str; scanf("%s",str); puts(str); return 0; } 出错 在输出时无法显示 调试就出... vc6.0
#include<stdio.h>
int main()
{
char *str;
str="l love china";
puts(str);

return 0;
}

运行成功

int main()
{
char *str;
scanf("%s",str);
puts(str);

return 0;
}
出错 在输出时无法显示 调试就出错了
在我看来这二者时一样的 求指教
下面的解答已被3309人点赞
看来楼主没有理解指针必须要初始化这一定律啊。
char *str;
str="l love china";
指针 str 是指向字符的,也就是指向了一个地址
赋值为str="l love china" 这里指针str的值也就是字符串 "l love china" 的首地址
而输出的时候puts(str); puts中的参数当然也是首地址了,如果puts的参数是字符数组,那实际上也是地址,因为数组的名字就是数组第一个元素的地址。当地址是字符串的地址时,指针会自动下移一个位置。直到遇到'\0'为止
而下面这个
char *str;
scanf("%s",str);
指针没有初始化,所以是不对滴。

其实在C语言中想要动态输入字符串(也就是不浪费空间,还是很麻烦的),直到怎么回事就行,不必太纠结这个问题
最后一次编辑时间 推荐于2017-09-07 19:04:36
知道手机网友
知道手机网友


知道手机网友:C语言指针什么时候要带*什么时候不带*?

下面的解答已被9971人点赞
同学 
这个不能硬背 要理解
带*表示的那个内存地址储存的值
不带*表示那个内存的地址
int *p,a; p是指针 a是整数
int *p,*a; p是指针 a也是指针
int *p=&a等价int *p; p=&a;
最后一次编辑时间 2013-02-22
杜D伟
杜D伟


杜D伟:C语言指针**p是什么意思

下面的解答已被3005人点赞
例如  int **p ;
解释:
int *p;则p是一个指向int型的变量的地址, p是地址;
*p指的是内容
而int **p;p指的是一个地址,p放的是*p的地址, *p指的是存放int 的地址.
最后一次编辑时间 推荐于2017-09-27 06:31:36
就是爱糖糖520
就是爱糖糖520


就是爱糖糖520:c语言中指针加不加*有什么区别

下面的解答已被4837人点赞
比如 int a=5; int *p =&a; p就是5的地址  *p就是p地址上的内容5
最后一次编辑时间 推荐于2018-03-13 23:51:29