可否定義一個地址變數,該地址指向的地方資料型別不定。
uj5u.com熱心網友回復:
int ? ... ...
uj5u.com熱心網友回復:
void *啊需要用什么資料型別就強轉
uj5u.com熱心網友回復:
其實char *應該都可以,它只要指向一個字節的地址就夠了,只要保證有足夠的連續空間存放不同的數據類型。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
先用空型別,后續再轉換型別uj5u.com熱心網友回復:
不確定型別,那么怎么知道應該給分配多少記憶體呢?uj5u.com熱心網友回復:
使用malloc為一個資料型別創建一塊記憶體再保存資料你就明白了uj5u.com熱心網友回復:
如果是函式呼叫時,想用不同型別的引數實體化,可以用類模板template <class T> //T為型別的別名
#include<iostream>
using namespace std;
template <class T>
T add(T& left, T& right)
{
return left + right;
}
int main()
{
int a = 3, b = 2;
double c = 5.0, d = 1.0;
printf("%d\n",add(a, b));
printf("%lf\n",add(c, d));
}
uj5u.com熱心網友回復:
地址就是指標,&a是指標常量,int *p,p的指標變數,你說的地址變數就是指標變數吧,指向的資料型別不定的話,你可以用void *p,這樣p可指向任何地方,與其他型別地址運算可自動轉換型別,你也可以手動轉。比如
#include <stdio.h>
int main()
{
int a=5;
double b=7;
void *p=&a;
printf("%d ",*(int*)p); //將指標強制轉換為int*型再訪問
p=&b;
printf("%f ",*(double*)p);
return 0;
}
void*指標用得最多的地方是函式形參,這樣不管傳什么型別的指標都能接收。
uj5u.com熱心網友回復:
Thanks.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/76025.html
標籤:C語言
上一篇:不懂就問,求解
