C语言学习小鹅通5.6-6.3鹏哥79.指针初阶1
字符数组实例
(不知道为什么tmd就是运行不了,vs要么是运行个错误答案,要么是直接报错,异常;vscode又nm报打开launch.json,服了)
#include <stdio.h>
void main() {
char num[10] = " H ell o ";
int i = 0;
int count = 0;
while (num[i]) {
if (num[i] = ' ')
{
count++;
}
i++;
}
printf("count is %d\n", count);
}
代码抄的,老师都能运行我的电脑为啥不行
指针
- 指针的引入
地址就是指针,都是指向所需的变量单元
要回答两个问题:(1)用大空间来存储地址(指针大小由编译器决定64位8,32位4,,所以指针无明确大小)
(2)访问方式 - 指针的大小
int main() {
char *abc;
printf("the len %d\n",sizeof(abc));
}
x86系统 the len 4
x64 the len 8
- 指针空间的访问方式
*将addr1变成地址
int a =10;//a占4个字节
&a//拿到的是4个字节中第一个字节的地址
int pa = &a;//pa是指针变量
//intpa中的int是指指向的a类型
*pa = 20;//改变a的值
- 指针类型的意义
指针类型决定了:指针解引用的权限有多大
(2)int能访问四个字节,如果是intp p+1地址会往后移4;charpc pc+1地址会往后移1
char *只能访问一个字节