C: (pointer) 数组变量和指针的区别
来源:互联网 发布:win10精简优化教程 编辑:程序博客网 时间:2024/05/21 15:40
1. sizeof(数组)=数组的长度; sizeof(指向数组的指针)=指针大小4或8
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
int
main(
int
argc,
const
char
* argv[])
{
char
s[] =
"hello world!"
;
char
*t = s;
printf
(
"sizeof(s) is %li \n"
,
sizeof
(s));
printf
(
"sizeof(t) is %li \n"
,
sizeof
(t));
return
0;
}
output:
sizeof(s) is 13
sizeof(t) is 8
2. char s[]中的&s等价于s, 同是取char s[]的地址;
而char *t = s中的&t 不等同于 t, 取得是t指针变量本身的地址
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int
main(
int
argc,
const
char
* argv[])
{
char
s[] =
"hello world!"
;
char
*t = s;
// &s == s; What is the address of the s array?
printf
(
"&s is %p \n"
, &s);
// &t != t; What is the address of the t variable?
printf
(
"&t is %p \n"
, &t);
return
0;
}
output:
&s is 0x7fff5fbffa2b
&t is 0x7fff5fbffa20
3. 声明指针, 内存会分配空间, 所以指针可以重新赋值; 而数组变量和数组元素公用地址, 所以如果重新赋值, 则产生编译错误.
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
int
main(
int
argc,
const
char
* argv[])
{
char
s[] =
"hello world!"
;
char
*t = s;
s = t;
// Error: Array type is not assignable
return
0;
}
0 0
- C: (pointer) 数组变量和指针的区别
- C语言指针、数组指针和指针数组的区别
- c/c++--指针数组和数组指针的区别
- 【C/C++】数组和指针的区别
- 指针(Pointer)和引用(Reference)的区别
- c++:变量,数组和指针
- C 数组指针和指针数组的区别
- c/c++中指针数组和数组指针的区别
- c 数组和指针的区别
- C数组和指针的区别
- C语言:数组和指针的区别
- C指针和数组的区别
- C语言数组和指针的区别
- C语言:数组和指针的区别
- C语言字符串指针变量与字符数组的区别
- C语言字符串指针变量与字符数组的区别
- 字符指针变量和字符数组的区别
- 字符指针变量和字符数组的区别:
- ocp 1Z0-051 106-140题解析
- shell进度展示案例
- How do I set up break reserves in parallel on AIX HACMP?
- Response.Write和ClientScript.RegisterStartupScript区别
- sql函数大全
- C: (pointer) 数组变量和指针的区别
- 黑马程序员——JAVA 程序的三种注释方式
- Java连接MYSQL 数据库的连接步骤
- 敏捷开发中的Scrum流程
- Mysql 几个比较常用的命令
- shell使用案例
- poj 1011 Sticks -----dfs+剪枝
- PadFone的智能手机
- Hadoop Cook Book: URLCat Error Info