C语言中指针的关键点


指针变量 自身类型。只将指针变量名拖黑 剩下啥类型 指针变量自身就是啥类型。p自身的类型是int指针变量 所指向的类型。将指针变量名和离它最近的一个一起拖黑 剩下啥类型 就指向啥类型。p指向的类型为int ==== p保存int类型变量的地址。
指向….类型 ==保存..类型变量的地址
int num = 10:
int *p;
p=#//p指向num ==p保存了num的地址

建立p和num的关系:p保存num的地址

&num 代表的是num变量起始地址(首地址)

*p 等价 num

scanf(“%d”,p);//如果此处为 &p表示键盘给p赋值 而不是给num赋值

//p就是指针变量 变量名为p不是p//在定义的时候:修饰p 表示p为指针变量

pa+i=a+i;

a[i]的地址是&a[i];

实参(Actual Parameters):当调用函数时,实际传递给函数的参数值。实参可以是变量、常量、表达式等,它们在函数调用时被传递给函数。实参的值在函数调用时被复制到函数内部的局部变量中,因此实参的值在函数内部的改变不会影响实参本身的值。
形参(Formal Parameters):在函数定义中,函数名后面的括号内的参数列表。形参是函数内部的局部变量,它们用来接收调用函数时传递的实参值。形参的值由函数调用时传递的实参决定。

void fun(int arr[],int n)=void fun(int*arr,int n)

遍历字符程序:

void strCopy(char* p, char* q)
{
while (*q != ‘\0’)
{
*p = *q;
p++;
q++;
}
*p = ‘\0’;
}

遍历所有可能的长度为k的子数组

for (int start = 0; start <= n – k; start++) {
int diffCount = 0;
int firstHalf = k / 2;

检查是否为回文数组

for (int i = 0; i < firstHalf; i++) {
if (arr[start + i] != arr[start + k – 1 – i]) {
diffCount++;
}
}

当二维数组的行指针p指向二维数组b的首行,对于二维数组b中的任一元素
b[i][j],可以用“((p+i)+j)”、“(p[i]+j)”、“((p+i))[j]”或“p[i][j]”来表示,也可以用
((b+i)+i)”、“(b[i]+j)”、“((b+i))[i]”来表示,所有选项B、C和D均能表示数组元素
b[1][2]。而“p[1]+2”表示数组元素b[1][2]的地址。

调用函数strcmp比较两个字符串的大小:

if (strcmp(pstr[j],pstr[j+1])>0){

temp = pestr[j];

pstr[j]=pstr[j+1];

pstr[j+1]=temp;

}

其中pstr为数组,temp为事先定义好的指针。


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *