不是很明白指针,本人小白,请教
c语言吧
全部回复
仅看楼主
level 3
侦哲优论
楼主
为了更加深入的了解指针,我用EXCEL表格来类比
2022年07月09日 16点07分
1
level 3
侦哲优论
楼主
如图,如果把每个单元格看做物理内存
A1就存储器的地址?
“hello word”就是改地址存储的数据?
然而,A2存储并不是数据,而是指向A1这个地址,这个A2是否就是指针变量?
2022年07月09日 16点07分
2
YujiSY
可以这么理解
2022年07月09日 16点07分
level 3
侦哲优论
楼主
虽然,他们显示都是“hello word”,但他们有本质的区别。
2022年07月09日 16点07分
3
level 3
侦哲优论
楼主
改变A1值,A2的内容也会改变,但A2指向的地址没有改变
2022年07月09日 16点07分
4
拓跋友友
改成改变*A1的值严谨一点
2022年07月09日 19点07分
level 3
侦哲优论
楼主
如果有什么不对的地方,希望也能用表格做类比,谢谢大佬
2022年07月09日 16点07分
5
level 2
李墨音i
2022年07月10日 00点07分
8
就是猪呗º
太典型了
2022年07月10日 02点07分
这下不得不看了😤
2022年07月10日 05点07分
level 8
原刻
我觉得不对。内存当中最小单元是一个字节,一个字节是8个bit组成。计算机小端的。指针本身有自己的地址(长度与机器有关),指针存放变量地址,变量原始类型不改变,但可以强制转化指针类型。字符数组用来表示字符串,要区分char 变量[]和char *变量。
2022年07月10日 00点07分
9
libyao9
char var[]不是变量哦
2022年07月10日 08点07分
libyao9
根本无法改变char var[]本身的值
2022年07月10日 08点07分
原刻
@libyao9
你可以试试这段代码。 #include <stdio.h> int main() { char *a="abcd"; a[1]='g'; printf("%s\n",a); return 0; }
2022年07月10日 09点07分
原刻
@libyao9
#include <stdio.h> int main() { char a[]="abcd"; a[1]='g'; printf("%s\n",a); return 0; }
2022年07月10日 09点07分
level 8
原刻
图不严谨,但是能表面意思。
2022年07月10日 01点07分
10
level 9
春不及夏🍭
要理解指针,真正搞懂指针,就要去把数据类型搞明白,指针的精髓是数据类型就像同样是地址,怎么区分指向的数据类型是char还是int
2022年07月10日 01点07分
11
level 5
巴黎正白旗🎅
指针也是值 不过这个值代表的是一个地址
就这样罢了
2022年07月10日 04点07分
12
level 5
巴黎正白旗🎅
要理解什么是指针 指针也是一个值 不过这个值是地址 你要操作数的地址 通过这个地址可以找到这个数 然后对他进行操作
除了c Java也有指针 不过Java的指针封装了 程序员是不能直接用的
2022年07月10日 04点07分
13
level 4
悠悠悠悠悠◎◎
指针有地址,但指针地址里存的还是地址,存的地址指向里面的数据。
2022年07月10日 05点07分
14
level 10
小坂井绫🍀
我觉得指针也没那么难理解吧,就是一个保存地址值的变量,这个指针变量的类型决定了他指向这个保存的地址作为首地址往后多少字节的整个区间,这个变量本身也要占内存,可以用另一个变量保存这个变量的地址,另一个变量就成二级指针了
2022年07月10日 05点07分
15
level 1
加官晋爵🌚
指针很难?
2022年07月10日 05点07分
16
level 1
Miku酱💢
楼主的图里有点错误,A2里面存放的不是=A1,而是A1 。
这种表达方式是把A1、A2当做地址,(A1),(A2)是这两个里面存放的元素,
那么(A1)=“helloworld”,(A2)=A1,((A2))=“helloworld”
2022年07月10日 07点07分
18
1
2
尾页