指針實際就是實體的代表而已,不過指針是個實體的存放地址;可以進行地址運算;
在樺南等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供成都做網站、網站建設 網站設計制作定制網站建設,公司網站建設,企業網站建設,高端網站設計,營銷型網站建設,成都外貿網站建設公司,樺南網站建設費用合理。
如:p++,指針指向下一地址;p=q以q指針指向地址作為p指針的地址;
普通的用法是,聲明實體或實體數組,用指針指向實體的地址:實體 b,g[8],*p;
p=b;數組名稱實際就是固定長度的指針,所以常有:p=g;p=g+2相當于p=g[2];
如函數 void fun(int b[]);可以用int *p;fun(p)來調用;p代表數組b;
如函數 void fun(int *p);可以用int b[6];fun(b)來調用;b相當于指針p;
#include "stdio.h"
int my_search(int *arr, int num, int size)
{
for (int i = 0; i size; i++)
if (arr[i] == num)
return i;
return -1;
}
int main()
{
int b[] = { 1,3,6,9,10,13,15,18,19,31,38,39,43,46,79,83,90 };
int num = 0;
printf("輸入待查找的數:");
scanf_s("%d", num);
int num_pos = my_search(b, num, sizeof(b) / sizeof(int));
if (num_pos = 0)
printf("查找成功,該數位于數組b的第%d號位置\n", num_pos + 1);
else
printf("查找失敗,該數不在數組b中\n");
return 0;
}
錯在void select_sort(char(*p)[50],int m)這個函數里面的選擇排序。
for(i=0;im;i++)
for(j=0;ji;j++)
應該改為
for(i=0;im-1;i++)
for(j=i+1;jm;j++)
因為選擇排序是當前字符串和它之后的字符串進行比較
在我的系統中運行你 的程序和你想的一樣,是8不是7.
string 1,string 2:
it's a boy
boy
offset 8 "boy"in"it's a boy"
所謂指針就是地址,只是指針會區別它是什么指針,對應的數據占多大內存。如subst,str都是char*類型的,他們是字符指針,所以他們指向的類型是字符。*str和str[0]的含義是一樣的,意思是取得首字符。在c語言中字符串就是用字符指針來表示的,對應的是“%s”,而加上了*,是取這個字符指針地址的內容,也就是一個字符,用“%c”表示。所以你打印的是字符串,就應該用%s。
您好,很高興回答您的問題。
您的這個程序,主函數中的第一句話表示p1 和str都是數組名,指向數組中的第一個元素。p2是指針變量,指向的是字符型數據。第二句話表示p2這個指針變量指向的是包含有abc等三個元素的字符型數組。strcpy(str+1,strcat(p1,p2))表示現將p2所指向的內容添加到p1這個數組的結尾處,并且存放在p1中,那么做完之后p1里的內容為abcabc。接下來執行strcpy(str+1,p1)表示把此時p1中的內容拷貝到str中,是從str+1這個位置開始。因為str是數組名,指向的是數組的第一個元素,那么str+1,就是從str數組的第二個元素位置開始,所以最終得到的結果就是aabcabc。
以上就是我對這個問題的回答,希望您能幫助到您。